JPWO2012172683A1 - Arithmetic processing device, information processing device, and control method of arithmetic processing device - Google Patents
Arithmetic processing device, information processing device, and control method of arithmetic processing device Download PDFInfo
- Publication number
- JPWO2012172683A1 JPWO2012172683A1 JP2013520387A JP2013520387A JPWO2012172683A1 JP WO2012172683 A1 JPWO2012172683 A1 JP WO2012172683A1 JP 2013520387 A JP2013520387 A JP 2013520387A JP 2013520387 A JP2013520387 A JP 2013520387A JP WO2012172683 A1 JPWO2012172683 A1 JP WO2012172683A1
- Authority
- JP
- Japan
- Prior art keywords
- request
- memory access
- unit
- cache
- bank
- 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.)
- Ceased
Links
Images
Abstract
L2キャッシュ制御部は、CPUコア部を介して要求格納部0から投入されたメモリアクセス要求に基づき、キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を要求格納部1と要求格納部2に保持する。バンクアボート生成部は、要求格納部1と2に保持されたメモリアクセス要求に基づき、主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したバンク毎のメモリアクセス要求の数のいずれかが所定値を超えた場合、L2キャッシュ制御部にバンクアボート通知を通知してアクセス中断を指示する。L2キャッシュ制御部は、この指示に基づいて要求格納部0に保持されたメモリアクセス要求の処理を中断する。主記憶制御部は、要求格納部2に保持されたメモリアクセス要求を主記憶装置に発行する。 The L2 cache control unit searches the cache memory based on the memory access request input from the request storage unit 0 via the CPU core unit, and requests the memory access request in which a cache miss has occurred to the request storage unit 1 and the request storage unit 2. Hold on. The bank abort generation unit counts the number of memory access requests to the main storage device for each bank based on the memory access requests held in the request storage units 1 and 2, and also counts the number of memory access requests for each bank. If any of the values exceeds a predetermined value, the L2 cache control unit is notified of a bank abort notification to instruct access interruption. Based on this instruction, the L2 cache control unit suspends processing of the memory access request held in the request storage unit 0. The main storage control unit issues a memory access request held in the request storage unit 2 to the main storage device.
Description
本願発明は、演算処理装置、情報処理装置および演算処理装置の制御方法に関する。 The present invention relates to an arithmetic processing device, an information processing device, and a control method for the arithmetic processing device.
主記憶装置にキャッシュメモリが接続され、キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する演算処理装置としてのCPU(Central Processing Unit)が知られている。このような演算処理装置は具体的には例えば、L2(Level-2:2次)キャッシュシステムとして情報処理装置としてのコンピュータシステムに実装されている。 A CPU (Central Processing Unit) is known as an arithmetic processing unit having a mechanism in which a cache memory is connected to a main storage device, and a memory access request to the cache memory and the main storage device is pipelined. Specifically, such an arithmetic processing device is implemented in a computer system as an information processing device, for example, as an L2 (Level-2: secondary) cache system.
命令を処理する命令処理部であるCPUコアが例えばロード命令をミスし、CPUコアにおけるL1(Level-1:1次)キャッシュメモリへのアクセスがミスすると、L2キャッシュ制御部に新規メモリアクセス要求が発行され、新規要求格納部に受信する。新規要求格納部からL2キャッシュメモリのパイプラインにメモリアクセス要求が投入される。パイプラインに投入されたメモリアクセス要求がL2キャッシュメモリでキャッシュミスを起こすと、キャッシュミスしたメモリアクセス要求は、要求格納部1とさらに主記憶制御機能を有するシステムコントローラ内の要求格納部2に格納される。要求格納部2からメモリアクセス要求が選択されてDRAM(Dynamic Random Access Memory)アクセス処理部へ発行されるとともに、要求格納部2からそのメモリアクセス要求が開放される。DRAMアクセス処理部では、パイプライン処理によりDRAMへアクセスが行われる。DRAMからシステムコントローラを経由してL2キャッシュ制御部に対して、データ応答が行われる。データ応答を受信したL2キャッシュ制御部は、要求応答パイプラインを起動する。 要求応答パイプラインの処理が完了すると、キャッシュタグ部の更新、キャッシュデータ部へのデータ格納、メモリアクセス要求を発行したCPUコアへのデータ応答(ロード要求でプリフェッチ要求でない場合)等が行われる。最後に要求格納部1が開放される。
If the CPU core that is an instruction processing unit that processes an instruction misses a load instruction, for example, and the CPU core misses access to the L1 (Level-1: primary) cache memory, a new memory access request is issued to the L2 cache control unit. Issued and received by the new request storage unit. A memory access request is input from the new request storage unit to the pipeline of the L2 cache memory. When a memory access request input to the pipeline causes a cache miss in the L2 cache memory, the memory access request having the cache miss is stored in the
一般にDRAMで構成される主記憶装置は、所定数のメモリバンク(以下、「バンク」という)に分割された構成がとられている。そして、1つのバンクに対するメモリアクセス要求の処理が開始されると、その同一バンクではある一定時間、次のメモリアクセス要求に対する処理ができないという特性を持っている。このため、上記構成において、あるメモリアクセス要求が要求格納部2から DRAMアクセス処理部に投入されると、そのメモリアクセス要求と同一のバンクは一定時間要求格納部2からの取り出しの選択対象から除外される。そして、処理可能なバンクのメモリアクセス要求のうち古いものから順次選択して処理が行われる。
Generally, a main storage device composed of a DRAM is divided into a predetermined number of memory banks (hereinafter referred to as “banks”). When processing of a memory access request for one bank is started, the same bank has a characteristic that processing for the next memory access request cannot be performed for a certain period of time. Therefore, in the above configuration, when a memory access request is input from the
従って例えば、複数のCPUコアを実装したシステムにおいて、複数のCPUコアから同一バンクに対するデータのロード要求が連続して発生するケースが考えられる。このような場合に、L2キャッシュシステムがキャッシュミスを起こすと、主記憶装置上の同一バンクへのメモリアクセス要求が集中し、主記憶装置からL2キャッシュメモリおよびCPUコアへのデータ転送効率が悪化する状況が発生し得る。 Therefore, for example, in a system in which a plurality of CPU cores are mounted, a case where data load requests for the same bank are continuously generated from a plurality of CPU cores can be considered. In such a case, when the L2 cache system causes a cache miss, memory access requests to the same bank on the main storage device are concentrated, and the data transfer efficiency from the main storage device to the L2 cache memory and the CPU core deteriorates. A situation can arise.
この課題に対して、複数のプロセッサが共用し独立にアクセス可能な複数のバンクに分割された主記憶装置に対するアクセス要求先のバンクに偏りが生じた場合にも、メモリアクセス待ちを短縮して、メモリアクセス性能を向上させることのできる技術が知られている。この従来技術では、 記憶制御装置内に、優先判定回路に対応し、かつ、アクセス要求スタック回路に対応する優先判定待ちスタック回路を記憶バンク対応の優先判定回路とアクセス要求スタック回路との間に設けて構成される。これにより、アクセス要求先の記憶バンクに偏りが生じた場合にも、後続の他記憶バンクへのアクセス要求を待たせることなく処理することを可能としている。また、優先判定待ちスタック回路は、内部にスタックされていないアクセス要求がある場合、入力されるアクセス要求を直接優先判定回路を介して記憶装置へ送ることができるように構成されている。 In response to this problem, even when the access request destination bank for the main storage device divided into a plurality of banks that can be shared and accessed independently by a plurality of processors is biased, the memory access wait time is shortened, A technique capable of improving the memory access performance is known. In this prior art, a priority determination waiting stack circuit corresponding to the priority determination circuit and corresponding to the access request stack circuit is provided in the storage controller between the priority determination circuit corresponding to the storage bank and the access request stack circuit. Configured. As a result, even when an access request destination storage bank is biased, subsequent access requests to other storage banks can be processed without waiting. The priority determination waiting stack circuit is configured to be able to send an input access request directly to the storage device via the priority determination circuit when there is an access request not stacked inside.
しかし、この従来技術は、L2キャッシュ制御部を含めたシステム全体としては最適なアクセス制御は実現できていないという問題点を有している。 However, this conventional technique has a problem that optimum access control cannot be realized for the entire system including the L2 cache control unit.
本発明は、キャッシュメモリと複数のメモリバンクを有する主記憶装置を含むシステムでメモリバンクへのアクセスを均等化することを目的とする。 An object of the present invention is to equalize access to a memory bank in a system including a cache memory and a main storage device having a plurality of memory banks.
態様の一例では、複数のバンクを有する記憶装置に接続される演算処理装置において、メモリアクセス要求を発行する命令処理部と、データを保持するキャッシュラインを複数有するキャッシュメモリと、前記命令処理部が発行したメモリアクセス要求を投入する第1の要求保持部と、キャッシュミスが発生したメモリアクセス要求を保持する第2の要求保持部と、前記第1の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第2の要求保持部に保持するキャッシュ制御部と、前記第2の要求保持部に保持されたメモリアクセス要求のうち、処理が中断されなかったメモリアクセス要求を保持する第3の要求保持部と、前記第2の要求保持部と前記第3の要求保持部とに保持されたメモリアクセス要求に基づき前記記憶装置に対するメモリアクセス要求の数をバンク毎に計数し、計数したいずれかのバンクのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第1の要求保持部に保持された、メモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の処理の中断を指示するアクセス計数部と、前記第3の要求保持部に保持されたメモリアクセス要求を前記記憶装置に発行する主記憶制御部とを有するように構成する。 In one example, in an arithmetic processing unit connected to a storage device having a plurality of banks, an instruction processing unit that issues a memory access request, a cache memory that has a plurality of cache lines that hold data, and the instruction processing unit A first request holding unit that inputs an issued memory access request, a second request holding unit that holds a memory access request in which a cache miss has occurred, and a memory access request input from the first request holding unit. The cache memory is searched based on the cache control unit that holds the memory access request in which the cache miss has occurred in the second request holding unit, and the processing among the memory access requests held in the second request holding unit A third request holding unit that holds a memory access request that has not been interrupted, the second request holding unit, When the number of memory access requests to the storage device is counted for each bank based on the memory access requests held in the three request holding units, and the counted number of memory access requests in any bank exceeds a predetermined value An access counting unit that instructs the cache control unit to interrupt processing of a memory access request for a bank in which the number of memory access requests exceeds a predetermined value, which is held in the first request holding unit; And a main storage control unit that issues a memory access request held in the request holding unit to the storage device.
キャッシュ制御部と複数のメモリバンクを有する主記憶装置が接続された構成において、キャッシュ制御部と主記憶装置に対する要求バンクが均等化され、バンクアクセスの偏りが発生しかかっても、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることが可能となる。これにより、メモリアクセス要求の発行状態が、常時多様な種類のバンクのメモリアクセス要求がキャッシュ制御部と主記憶制御部のパイプラインに格納される状態にすることができ、メモリバンク毎にバンクアクセスの均等化を図ることが可能となる。 In a configuration in which a cache control unit and a main storage device having a plurality of memory banks are connected, even if the bank demands for the cache control unit and the main storage device are equalized and a bank access bias occurs, the memory access of the same bank It is possible to stop requests from being issued excessively. As a result, the memory access request issuance state can be changed so that memory access requests of various types of banks are always stored in the pipelines of the cache control unit and the main memory control unit. Can be equalized.
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図1Aおよび図1Bは、主記憶装置にL2キャッシュメモリが接続され、L2キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図である。この構成は、CPUコアの部分と主記憶アクセスを行う部分が、主記憶アクセス機能外付けマルチコアCPUチップ1とシステムコントローラチップ107に分かれている構成である。Hereinafter, embodiments for carrying out the present invention will be described in detail with reference to the drawings.
1A and 1B are diagrams showing a general configuration of an information processing apparatus having an L2 cache memory connected to a main storage device and having a mechanism for pipeline processing of memory access requests to the L2 cache memory and the main storage device. is there. In this configuration, a CPU core portion and a portion that performs main memory access are divided into a
図1AのCPUコア部100は、演算処理を実行する演算処理プロセッサであり、1つ以上実装され得る。CPUコア部100は命令処理部の一例である。
The
図1Aの新規要求格納部102(「要求格納部0」とも呼ぶ)、パイプライン制御部103、および要求格納部104(以下単に「要求格納部1」と記載する)は、L2キャッシュ制御部101を構成する。
The new request storage unit 102 (also referred to as “request storage unit 0”), the
新規要求格納部102は、各CPUコア部100に対応して1つ以上のエントリが実装される。新規要求格納部102は、CPUコア部100内のL1(1次)キャッシュがキャッシュミスしたときに、メモリアクセス要求を、L2(2次)キャッシュメモリでのパイプライン処理のために、そのCPUコア部100に対応するエントリに保持する。
The new
パイプライン制御部103は、新規要求格納部102に格納されたメモリアクセス要求のキャッシュアクセスおよび主記憶アクセスをパイプライン処理するための制御を実行する。
The
図1Aのキャッシュタグ部105とキャッシュデータ部106は、L2キャッシュメモリを構成する。キャッシュタグ部105は、キャッシュライン毎にタグを記憶する。キャッシュデータ部106は、キャッシュライン毎に、そのキャッシュラインに対応するインデックスとそのキャッシュラインに対応するキャッシュタグ部105上のタグとで定まる、主記憶装置としてのDIMM(Dual Inline Memory Module)110(図1B)上のアドレスのデータを保持する。パイプライン制御部103からキャッシュタグ部105へは、タグ読み出しコマンドが発行されてタグが読み出され、または、タグ更新コマンドが発行されてタグが更新される。また、パイプライン制御部103からキャッシュデータ部106へは、データのリードまたはライト指示(R/W指示)が発行され、データのリード動作またはライト動作が行われる。
The
図1Aの要求格納部1 104(以下単に「要求格納部1」と呼ぶ)は、パイプライン制御部103によるキャッシュタグ部105へのキャッシュアクセスがキャッシュミスした場合に、そのキャッシュミスしたメモリアクセス要求を保持する。要求格納部1は、DIMM110(図1B)へのアクセスが完了し、キャッシュタグ部105、キャッシュデータ部106が更新され、またはCPUコア部100へのデータ転送が完了するまで、各メモリアクセス要求を保持する。
The
図1AのCPU側バスインタフェース部111は、主記憶アクセス機能外付けマルチコアCPUチップ1とシステムコントローラチップ107を接続するシステムバスの、主記憶アクセス機能外付けマルチコアCPUチップ1側インタフェース回路である。
The CPU side
図1Bのシステムコントローラチップ107内のシステムコントローラ側バスインタフェース部112は、上記システムバスのシステムコントローラチップ107側インタフェース回路である。
A system controller side
図1Bのシステムコントローラチップ107内の要求格納部2 108(以下単に「要求格納部2」と呼ぶ)は、図1AのL2キャッシュ制御部101においてキャッシュミスしたメモリアクセス要求を保持する。要求格納部2は、システムコントローラチップ107内のDIMMアクセス制御部109にメモリアクセス要求が読み出されて主記憶アクセスのパイプラインに投入されるまで、各メモリアクセス要求を保持する。
A
要求格納部1および2へのメモリアクセス要求の格納時には、パイプライン制御部103から要求格納部1および2に要求格納指示が発行され、要求格納部1および2はこの指示に基づいてメモリアクセス要求の格納動作を実行する。
When storing a memory access request in the
図1Bのシステムコントローラチップ107内のDIMMアクセス制御部109は、要求格納部2から投入可能なバンクのメモリアクセス要求を選択し、DIMM110に対して、メモリアクセスのコマンドとアドレスを発行する。要求格納部2からDIMMアクセス制御部109に読み出されたときに、要求格納部2からシステムコントローラ側バスインタフェース部112と図1AのCPU側バスインタフェース部111を介して図1Aの要求格納部1に対し、要求開放通知が通知される。
The DIMM
図1BのDIMM110は、複数のDRAMチップをプリント基板上に搭載したメモリモジュールであり、主記憶装置として使用される。
The
DIMM110へのアクセスにより取得された主記憶装置からのデータ応答は、図1Aの、キャッシュデータ部106、要求格納部1、メモリアクセス要求の要求元のCPUコア部100に応答される。
The data response from the main storage device acquired by accessing the
図1Aのパイプライン制御部103は、上記データ応答に対応して、キャッシュデータ部106に対してライトコマンドを発行する。これにより、パイプライン制御部103は、主記憶部から応答されたデータを、キャッシュデータ部106上の、上記応答データのアドレスに対応するキャッシュラインのうち書き込み可能なキャッシュウェイに書き込む。また、パイプライン制御部103は、上記データ応答に対応して、キャッシュタグ部105に対してタグ更新コマンドを発行する。これにより、パイプライン制御部103は、キャッシュタグ部105上の、上記キャッシュラインおよびキャッシュウェイに対応する部分のタグを、上記応答データのアドレスに対応するタグで更新する。
The
図1Cおよび図1Dは、図1Aおよび図1Bと同様に、主記憶装置にL2キャッシュメモリが接続され、L2キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図である。この構成は、主記憶アクセスを行う部分が、主記憶アクセス機能外付けマルチコアCPUチップ1内に1チップとして実装されている構成である。
1C and 1D, similarly to FIGS. 1A and 1B, an L2 cache memory is connected to a main storage device, and an information processing apparatus having a mechanism for pipeline processing memory access requests to the L2 cache memory and the main storage device It is a figure which shows the general structure of. In this configuration, a portion that performs main memory access is mounted as a single chip in the external
この構成では、図1AのCPU側バスインタフェース部111、図1Bのシステムコントローラ側バスインタフェース部112が省略され、さらに、図1Bの要求格納部2の機能も省略されて、要求格納部1に統合されている。要求格納部1が要求格納部2の機能を担っており、要求格納部1と要求格納部2の間の通信制御が省略される以外は、図1Aおよび図1Bの場合と同様の制御である。
In this configuration, the CPU side
図2は、図1Aおよび図1Bの構成を有するL2キャッシュシステムのパイプライン処理を示す動作シーケンス図である。 FIG. 2 is an operation sequence diagram showing pipeline processing of the L2 cache system having the configuration of FIGS. 1A and 1B.
まず、CPUコア部100が例えばロード命令をミスし、CPUコアにおけるL1(1次)キャッシュメモリへのアクセスがミスすると、L2キャッシュ制御部101に新規メモリアクセス要求が発行される。これにより、メモリアクセス要求が、L2キャッシュ制御部101内の新規要求格納部102に受信される(シーケンスS1)。
First, when the
新規要求格納部102からL2キャッシュメモリのパイプライン(図2中「L2−PIPE」と記載)にメモリアクセス要求が投入される(シーケンスS2)。なお、L2−PIPEは、物理的な回路を示すものではなく、時間経過に沿ったパイプライン処理の状況を示す図である。
A memory access request is input from the new
L2−PIPEに投入されたメモリアクセス要求がL2キャッシュメモリでキャッシュミスを起こすと(シーケンスS3)、キャッシュミスしたメモリアクセス要求は、要求格納部1に格納される(シーケンスS4)。さらに、そのメモリアクセス要求は、図1Bのシステムコントローラチップ107内の要求格納部2に格納される(シーケンスS5)。要求格納部1から要求格納部2へのメモリアクセス要求の転送は、図1AのCPU側バスインタフェース部111からシステムバスを経由して図1Bのシステムコントローラ側バスインタフェース部112を介して実行される。また、パイプライン制御部103から新規要求格納部102には、上記メモリアクセス要求に対応するエントリの開放通知が通知される(シーケンスS6)。これにより、新規要求格納部102は、上記メモリアクセス要求に対応するエントリを開放し、次のメモリアクセス要求を受け付け可能な状態になる。
When a memory access request input to the L2-PIPE causes a cache miss in the L2 cache memory (sequence S3), the memory access request having the cache miss is stored in the request storage unit 1 (sequence S4). Further, the memory access request is stored in the
要求格納部1および要求格納部2は、メモリアクセス要求を保持するエントリをそれぞれ複数備える。パイプライン制御部103は、新規要求格納部102内の1つのエントリから1つのメモリアクセス要求を取り出してキャッシュアクセスを実行する。この結果、キャッシュヒットとなってCPUコア部100へのデータ応答が完了する、またはキャッシュミスによりメモリアクセス要求が要求格納部1および2に格納される。
Each of the
システムコントローラチップ107内の要求格納部2に保持されたメモリアクセス要求は、処理可能なバンクアドレスを有するメモリアクセス要求から順にDIMM110のアクセス用のパイプライン(図2中「主記憶アクセスパイプ」と表記)に投入される。なお、主記憶アクセスパイプは、L2−PIPEと同様に、物理的な回路を示すものではなく、時間経過に沿った主記憶アクセスのパイプライン処理の状況を示す図である。DIMMアクセス制御部109は、要求格納部2からメモリアクセス要求を取り出すとともに(シーケンスS7)、要求格納部2のエントリを開放してその旨を要求格納部1に通知する(シーケンスS8)。要求格納部2から要求格納部1への通知は、図1Bのシステムコントローラ側バスインタフェース部112からシステムバスを経由して図1AのCPU側バスインタフェース部111を介して実行される。これにより、要求格納部2は、開放されたエントリに、新たなメモリアクセス要求を受け付け可能な状態になる。DIMMアクセス制御部109は、取り出したメモリアクセス要求に対応するコマンドとアドレスを生成し、DIMM110に対してメモリアクセスを実行する(シーケンスS9)。
The memory access requests held in the
DIMM110におけるメモリアクセスが完了すると、DIMM110から要求格納部1に対してデータ応答が送信される(シーケンスS10)。要求格納部2から要求格納部1へのデータ応答は、図1Bのシステムコントローラ側バスインタフェース部112からシステムバスを経由して図1AのCPU側バスインタフェース部111を介して実行される。この結果、要求格納部1からパイプライン制御部103を介して、L2−PIPE上で要求応答パイプが起動される(シーケンスS11)。要求応答パイプにおいて、パイプライン制御部103は、キャッシュデータ部106への応答データの書き込みとキャッシュタグ部105のタグの更新を実行する(シーケンスS12)。さらに、パイプライン制御部103は、CPUコア部100へのデータ応答を行う(シーケンスS13)。なお、CPUコア部100へのデータ応答は、メモリアクセス要求が、ロード要求であって、かつ予めキャッシュメモリに必要なデータを読み込むプリフェッチ要求でない場合に実行される。最後に、要求格納部1に、該当するメモリアクセス要求のエントリの開放を通知する(シーケンスS14)。これにより、要求格納部1の該当するエントリが開放される。
When the memory access in the
以上の制御動作において、パイプライン制御部103は、新規要求格納部102の複数のエントリのうちから1つのメモリアクセス要求を取り出してキャッシュアクセスを実行し、新規要求格納部102のそのエントリを開放する。その後、パイプライン制御部103は、1つのメモリアクセス要求においてキャッシュミスが起こって主記憶アクセスが必要になった場合には、そのメモリアクセス要求を要求格納部1および2に引き渡す。これにより、パイプライン制御部103は、L2−PIPE上で、いったんそのメモリアクセス要求に対応する処理を開放して、他のメモリアクセス要求を新規要求格納部102の新たなエントリから読み込むことができる。この結果、DIMMアクセス制御部109は、新規要求格納部102からメモリアクセス要求を次々に読み込んで、各メモリアクセス要求に対応するキャッシュアクセスを連続的にパイプライン処理することができる。
In the above control operation, the
また、システムコントローラチップ107内のDIMMアクセス制御部109は、要求格納部2から1つのメモリアクセス要求を取り出した後、要求格納部2の該当するエントリを開放して、そのエントリで次のメモリアクセス要求を受け付け可能な状態にする。そして、DIMMアクセス制御部109は、同一バンクアドレスでなければ、要求格納部2から次のメモリアクセス要求を取り出して、連続的に処理することができる。このようにして、システムコントローラチップ107においても、主記憶アクセスパイプによるパイプライン処理によって、効率的な主記憶アクセスが実現される。
Also, the DIMM
パイプライン制御部103は、要求格納部1の使用エントリ数をカウントするカウンタを備えている。そして、パイプライン制御部103は、新規要求格納部102からメモリアクセス要求を読み出してキャッシュアクセスした結果、キャッシュミスが発生した場合に、要求格納部1に空きがないときには、新規要求格納部102に対して差し戻し指示を通知する。この結果、新規要求格納部102の該当するエントリは開放されず、待機状態となる。
The
また、パイプライン制御部103から要求格納部1には、パイプライン制御部103が現在パイプライン処理しているパイプアドレス(メモリアクセス要求が要求するアドレス)が通知されている。この結果、要求格納部1は、自身のエントリ内のメモリアクセス要求が要求するアドレスとパイプアドレスとの一致を検出すると、アドレスマッチ通知をパイプライン制御部103に通知する。この場合には、パイプライン制御部103がパイプライン処理を開始しようとするメモリアクセス要求のアドレスのデータは、現在、要求格納部1のエントリに格納されていてそのエントリを占有している状態(仕掛り中)であるため、再度主記憶アクセスを行う必要はない。このため、パイプライン制御部103は、アドレスマッチ通知を受信した場合には、新規要求格納部102に対して差し戻し指示を通知する。この結果、新規要求格納部102の該当するエントリは開放されず、待機状態となる。要求格納部1中の該当するメモリアクセス要求が実行されてキャッシュタグ部105とキャッシュデータ部106が更新された後に、上記新規要求格納部102中の同じアドレスを要求するメモリアクセス要求がパイプライン処理される。これにより、当該メモリアクセス要求がキャッシュヒットし、キャッシュデータ部106から該当するデータが要求元のCPUコア部100にロードされる。
Further, the
その他、パイプライン制御部103においてパイプラインのアボート条件が成立した場合に、パイプライン制御部103から新規要求格納部102や要求格納部1に対して差し戻し指示を通知する。この結果、新規要求格納部102や要求格納部1の該当するエントリは開放されず、待機状態となる。
In addition, when the pipeline abort condition is satisfied in the
図1A、図1BのL2キャッシュシステムの構成において、DRAMの一種であるDIMM110で構成される主記憶装置は、ある数のバンクに分割された構成がとられている。そして、あるバンクに対するメモリアクセス要求の処理が仕掛かると、その同一バンクではある一定時間、次のメモリアクセス要求に対する処理ができないという特性を持っている。このため、メモリアクセス要求が要求格納部2からDIMMアクセス制御部109に投入されると、その要求と同一のバンクアドレスを有するメモリアクセス要求は、一定時間要求格納部2からの取り出しの選択対象から除外される。そして、要求格納部2のエントリ内の処理可能なバンクアドレスを有するメモリアクセス要求のうち、古いものから順次選択して処理が行われる。
In the configuration of the L2 cache system shown in FIGS. 1A and 1B, the main storage device including the
図3は、図1A、図1BのL2キャッシュシステムのパイプライン処理のイメージを示した図である。 FIG. 3 is a diagram showing an image of pipeline processing of the L2 cache system of FIGS. 1A and 1B.
いま、図1AのCPUコア部100として、Core0、Core1、Core2、Core3の4つのプロセッサが実装されている場合を考える。また図3で、BANK:0、BANK:1、BANK:2、BANK:3、BANK:4、BANK:5、BANK:6、BANK:7は、要求パイプ上では、各ラベルで示されるバンクアドレスのメモリアクセス要求がパイプライン処理されていることを示す。また、これらのラベルは、要求応答パイプ上では、各ラベルで示されるバンクアドレスのデータ応答がパイプライン処理されていることを示す。なお、以下の説明では、「BANK:0」を単に「0」、「BANK:1」を単に「1」というように、ラベル「BANK:」を省略して説明する。
Now, consider a case where four processors Core 0,
まず、Core0〜3の4つのCPUコア部100を実装したシステムにおいて、オンライン映像配信などのストリーミングデータを扱うサービスが実行されている場合を考える。この場合に、同じストリーミングデータの再生に対して、ほぼ同時に複数のCPUコア部100から要求されるケースを考える。このようなケースでは、図3(a)の301として示されるように、Core0〜3の各CPUコア部100から、例えば0→0→0→0→1→1→1→1というように、同一バンクのメモリアクセス要求が連続して要求パイプ上で発行される可能性がある。この場合、L2キャッシュメモリでキャッシュミスが発生すると、DIMMアクセス制御部109が要求格納部2から最初のBANK:0のメモリアクセス要求を読み出してDIMM110へのメモリアクセスを実行する。そしてその後、一定時間は、DIMMアクセス制御部109は、同じBANK:0のメモリアクセス要求は、要求格納部2から読み出せない。すなわち、図3(a)の301の例では、最初のBANK:0のメモリアクセス要求が実行された後、一定時間、同じBANK:0を有する続く3つのメモリアクセス要求は要求格納部2に滞留したままとなる。そして、図3(a)の302として示されるように、要求格納部2からDIMMアクセス制御部109へは、その他のBANK:1やBANK:2のメモリアクセス要求が読み出されてDIMM110へのメモリアクセスが実行される。この結果、要求応答パイプ上のデータ応答は、図3(a)の302に示されるように、最初のBANK:0のデータ応答の後に、間隔が空いてBANK:1、BANK:2などのデータ応答が続く。そして、最初のBANK:0のデータ応答の後一定時間が経ってからやっと、次のBANK:0のデータ応答が現れる。
First, consider a case where a service that handles streaming data such as online video distribution is executed in a system in which the four
図3(a)に示されるような状況では、同一のバンクに対するデータ応答が大きく遅れるだけでなく、要求格納部1や2上で同一のバンクに対するメモリアクセス要求が多く滞留するようになる。この結果、要求格納部1や2に新たなメモリアクセス要求を格納することができなくなり、要求格納部1および2の使用可能なエントリが枯渇してしまう。すなわち、要求格納部1や2のエントリを無駄に占有し実質的にエントリ数 を縮小させているものといえ、L2キャッシュ制御部101の性能が理論性能から大幅に低下してしまうという問題が発生する。
In the situation shown in FIG. 3A, not only the data response to the same bank is greatly delayed, but also many memory access requests for the same bank stay on the
これを解決する手段としてまず考えられるのは、要求格納部1および2のエントリ数を増大させることである。例えば全ストリームに対してDIMM110上へのメモリアクセス要求を格納できるだけの多数のエントリ数を用意すれば、局所的な偏りの影響を軽減することが期待できる。しかし、この手段は集積回路上に占める物理面積の増大を招くという問題がある。
A possible solution to this problem is to increase the number of entries in the
従って、物理面積の増大を招くことなく、要求格納部1や2のバンクが常時均等である状態 を保つことが重要である。すなわち、キャッシュミス時の主記憶アクセスのパイプライン上で、メモリアクセス要求が要求する主記憶部上のバンクが特定のバンクに偏ることなく均等に分散するようなアクセス制御を行うことが、キャッシュ制御上重要となる。以下に説明する実施形態では、このようなアクセス制御を、キャッシュ制御部から主記憶装置へのパイプラインアクセスにおけるバンクの均等化と呼ぶ。
Therefore, it is important to keep the banks of the
図3(b)の303として示されるように、1つのCPUコア部100からは、0→1→2→3→4というように連続したバンクアクセスのストリーミングデータに対するメモリアクセス要求が出力される。しかし、Core0〜3の各CPUコア部100を合わせた全体でみると、例えば0→4→2→6→1→5→3→7というように、多様な種類のバンクのメモリアクセス要求が順次要求パイプ上で発行される場合を考える。この場合、L2キャッシュメモリでたとえキャッシュミスが発生しても、要求格納部2からDIMMアクセス制御部109には、各バンクアドレスのメモリアクセス要求を次々と読み出すことができる。この結果、図3(b)の304として示されるように、図2のシーケンス12として実行される要求応答パイプ上では、要求パイプ上の順と同じ順で、各バンクアドレスに対応するデータ応答を、間断なく処理することができる。この場合には、主記憶部からL2キャッシュ制御部101およびCPUコア部100へのデータ転送性能は、最大となる。しかしながら、常時図3(b)に示すように、多様な種類のバンクへのメモリアクセス要求が生じるわけではない。したがって、メモリキャッシュ制御部から主記憶部へのパイプラインアクセスにおけるバンクの均等化がより的確に行われるようにすることが望まれる。
As indicated by
以下に説明する第1の実施形態は、バンクに分割された構成を有する主記憶装置、前記主記憶装置を制御する主記憶制御装置、主記憶装置に対するキャッシュメモリ、および前記キャッシュメモリを制御するキャッシュ制御装置を有する。新規のメモリアクセス要求に対して、キャッシュ制御装置において、新規要求格納部からパイプライン投入部を経て、前記キャッシュメモリの状態を保持するタグをパイプライン処理によって検索する。その結果キャッシュミスが発生したら、要求格納部1にキャッシュライン単位で主記憶装置に対する仕掛り中のメモリアクセス要求として格納するとともに主記憶制御装置に該メモリアクセス要求を発行する。要求格納部1は主記憶装置からのデータ応答を受信後、パイプライン処理により前記キャッシュメモリのタグ部およびデータ格納部を更新するとともに、要求格納部1のエントリを開放する。要求格納部1は後続のメモリアクセス要求に対してパイプラインでアドレスマッチを行い、同じアドレスに対する処理を中断させる。そしてキャッシュ制御装置からのメモリアクセス要求を一時的に主記憶制御装置内の各バンク共有の要求格納部2に格納し、当該要求格納部2から処理中でないバンクの要求を選択して主記憶装置に対する処理を行うこの情報処理装置において、パイプライン処理中の新規のメモリアクセス要求に対応する主記憶装置のバンクについて、当該バンクと一致するメモリアクセス要求が要求格納部1にいくつ格納されているかを計数し、当該計数値があらかじめ定められた閾値を超える場合は処理を中断させ、当該閾値を超えない場合は処理を続行させ、主記憶制御装置の要求格納部2へメモリアクセス要求を発行するものである。そして、計数する要求格納部1内のメモリアクセス要求は、要求格納部1に格納されたメモリアクセス要求のうち要求格納部2の開放通知を未受信であるメモリアクセス要求である。その結果、主記憶制御装置における要求格納部2に格納された要求のバンクが均等になるように導かれ、理論性能に近い主記憶転送性能を得ることを可能にする。
A first embodiment described below includes a main storage device having a configuration divided into banks, a main storage control device that controls the main storage device, a cache memory for the main storage device, and a cache that controls the cache memory It has a control device. In response to a new memory access request, the cache controller searches for a tag holding the state of the cache memory through pipeline processing from the new request storage unit through the pipeline input unit. As a result, if a cache miss occurs, it is stored in the
第1の実施形態は、図1A、図1Bのシステム構成を基本として、これを改良した図4Aおよび図4Bに示されるシステム構成を有する。図4A、図4Bにおいて、図1A、図1Bと同様の動作をする部分には同じ番号を付してある。この実施形態の構成は、図1A、図1Bの場合と同様に、CPUコアの部分と主記憶アクセスを行う部分が、主記憶アクセス機能外付けマルチコアCPUチップ1とシステムコントローラチップ107に分かれている構成である。
The first embodiment has a system configuration shown in FIGS. 4A and 4B, which is an improvement of the system configuration shown in FIGS. 1A and 1B. 4A and 4B, the same reference numerals are given to portions that perform the same operations as those in FIGS. 1A and 1B. In the configuration of this embodiment, as in the case of FIGS. 1A and 1B, the CPU core part and the part that performs main memory access are divided into a
図4Bのシステムコントローラチップ107の構成は、図1Bの構成と同様である。
図4Aでは、L2キャッシュ制御部101が、バンクアドレス均等制御部(バンクアボート生成部)401と、バンクアドレス均等制御部(バンク待機制御部)402を備える。The configuration of the
4A, the L2 cache control unit 101 includes a bank address equalization control unit (bank abort generation unit) 401 and a bank address equalization control unit (bank standby control unit) 402.
バンクアボート生成部401は、要求格納部1と要求格納部2に保持されたメモリアクセス要求に基づき、主記憶部のDIMM110に対するメモリアクセス要求の数をバンク毎に計数する。これとともに、計数したバンク毎のメモリアクセス要求の数のいずれかが所定値を超えた場合に、パイプライン制御部103に主記憶アクセスの中断を指示するバンクアボート通知を通知する。これにより、パイプライン制御部103は、新規要求格納部102に対して差し戻し指示を通知する。この結果、新規要求格納部102の該当するエントリは開放されず、待機状態となって、該当するメモリアクセス要求の実行が遅らされる。
The bank
また、バンクアボート生成部401は、計数したバンク毎のDIMM110に対するメモリアクセス要求の数のうち所定値を超えたバンク毎に、要求待機通知を、バンク待機制御部402に通知する。
In addition, the bank
バンク待機制御部402は、新規要求格納部102のエントリから出力されるメモリアクセス要求のうち、バンクアボート生成部401が出力した要求待機通知に対応するバンクアドレスを要求する待機中のメモリアクセス要求の出力を抑止する。この結果、DIMM110に対する該当するバンクのメモリアクセス要求の計数値が所定値を下回るまで、該当するメモリアクセス要求のL2キャッシュ制御部101のパイプラインへの投入が抑止される。
Of the memory access requests output from the entry in the new
要求格納部2からDIMMアクセス制御部109にメモリアクセス要求が読み出されて実行される毎に、そのメモリアクセス要求に対応するバンクの計数値を−1する。
Each time a memory access request is read from the
以上のバンクアボート生成部401とバンク待機制御部402とからなるバンクアドレス均等制御部により、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることができる。さらに、他のバンクと比較して発行の頻度が少ないバンクのメモリアクセス要求を優先的に、DIMM110に発行させることができる。これにより、メモリアクセス要求の発行状態が、自然に図3(b)に例示したように、常時多様な種類のバンクのメモリアクセス要求が要求格納部1や2に格納される状態にすることができ、バンクアクセスの均等化を図ることが可能となる。
The bank address equalization control unit including the bank
図5Aは、図4Aの新規要求格納部102(要求格納部0)とバンクアドレス均等制御部(バンク待機制御部)402の詳細な回路構成図である。 FIG. 5A is a detailed circuit configuration diagram of the new request storage unit 102 (request storage unit 0) and the bank address equalization control unit (bank standby control unit) 402 of FIG. 4A.
新規要求格納部102は、エントリ部501、エントリ出力ゲート502、パイプ投入エントリ選択部503、リセット用オアゲート504を備える。
The new
エントリ部501は、1つ以上のCPUコア部100のそれぞれに対応して実装される。エントリ部501は、CPUコア部100内のL1キャッシュがキャッシュミスしたときに、メモリアクセス要求を、L2キャッシュメモリでのパイプライン処理のために保持する。このとき、CPUコア部100からのメモリアクセス要求によって、VALフラグがセット(set)され、PA(Physical Address)データとして、アクセスを要求する物理アドレスデータが書き込まれる。VALフラグは、そのエントリ部501に設定されているメモリアクセス要求が有効であるか否かを示すフラグである。物理アドレスデータは例えば、40ビットで構成され、39ビット目から19ビット目までの21ビットがタグを表す。また、18ビット目から7ビット目までの12ビットがインデックス(=キャッシュライン数)を表す。すなわち、第1の実施形態におけるL2キャッシュメモリのキャッシュライン数は、2の12乗=4096ラインである。インデックス内の9ビット目から7ビット目までの3ビットがバンクアドレスを表す。すなわち、第1の実施形態におけるDIMM110のバンク数は2の3乗=8バンクである。さらに、6ビット目から0ビット目までの7ビットが、同一ライン内のオフセットアドレスを表す。エントリ部501において、HLDフラグおよびWAITフラグは、電源投入時にはリセットされる。HLDフラグは、そのエントリ部501のメモリアクセス要求がL2キャッシュ制御部において要求格納部1のエントリを占有している状態であることを示すフラグである。WAITフラグは、L2キャッシュ制御部101においてそのメモリアクセス要求がいったんアボートされ、L2キャッシュ制御部101に対して再発行待ちの状態であることを示すフラグである。
The
エントリ出力ゲート502は、1つ以上のエントリ部501に対応して設けられ、各エントリ部501の出力を有効にするか否かを決定する。エントリ出力ゲート502は、エントリ部501のVALフラグがオンで、HLDフラグがオフで、バンク待機制御部402の出力がオフのときにオンとなる。CPUコア部100からエントリ部501に最初にメモリアクセス要求がセットされたときは、HLDフラグがオフである。また、WAITフラグもオフであるため、バンク待機制御部402内のそのエントリ部501に対応するアンドゲート群511とアンドゲート513が全てオフとなってオアゲート512の出力がオフとなる。このようにして、メモリアクセス要求が最初にエントリ部501にセットされたときは、そのエントリ部501に対応するエントリ出力ゲート502は必ずオンとなって、そのメモリアクセス要求をパイプ投入エントリ選択部503に出力する。すなわち、新規のメモリアクセス要求は必ず一度は無条件にパイプ処理を行わせる。キャッシュヒットするメモリアクセス要求であれば新規要求格納部102おいて待機の必要はないからである。
The
パイプ投入エントリ選択部503は、出力がオンとなっているエントリ出力ゲート502に対応するエントリ部501に保持されているメモリアクセス要求のうちから、所定の規則に従って(例えば古い順に)メモリアクセス要求を選択する。そして、その選択したメモリアクセス要求を、図4Aのパイプライン制御部103に投入する。このとき、パイプ投入エントリ選択部503の出力に従って、該当するエントリ部501のHLDフラグがリセット(rst)される。この結果、そのエントリ部501に対応するエントリ出力ゲート502はオフとなる。そして、パイプライン制御部103からのパイプライン差し戻し通知528がオンとなってリセット用オアゲート504を介してHLDフラグがリセットされない限り、そのエントリ部501のメモリアクセス要求は再びパイプライン制御部103に投入されることはない。つまり、そのエントリ部501では、そのメモリアクセス要求がパイプライン制御部103へ投入されてからその実行結果が待たれることになる。
The pipe entry
パイプライン制御部103において、L2−PIPE(図2参照)に投入されたメモリアクセス要求のアボート条件が成立すると、パイプライン制御部103から新規要求格納部102に、パイプライン差し戻し通知528が通知される。この結果、リセット用オアゲート504を介してHLDフラグがオフされるとともに、WAITフラグがセットされる。これにより、エントリ部501内のメモリアクセス要求は待機状態となる。この状態においては、エントリ部501に対応するエントリ出力ゲート502において、VALフラグはオン、HLDフラグはオフとなっている。従って、エントリ出力ゲート502の出力の有無は、バンク待機制御部402の出力に依存して決定されることになる。
When the
アンドゲート513と、バンク待機制御部402は、各エントリ部501に対応してそれぞれ設けられている。アンドゲート513には、エントリ部501のWAITフラグと、図4Aのパイプライン制御部103から出力される要求格納部1資源カウンタ値515が入力している。要求格納部1資源カウンタ値515は、図4Aの要求格納部1で現在使用中のエントリ数をカウントしている。そして、要求格納部1のエントリ数に空きがあるときには要求格納部1資源カウンタ値515は0、空きがないときには要求格納部1資源カウンタ値515は1となる。従って、エントリ部501のメモリアクセス要求がパイプライン制御部103から差し戻されて待機状態となっており、かつ要求格納部1のエントリ数に空きがないときには、次のような制御動作が実行される。アンドゲート513の出力がオン(1)となり、オアゲート512を介してエントリ出力ゲート502がオフ(0)となることにより、待機状態となっているメモリアクセス要求のパイプライン制御部103への投入が抑止される。
An AND
一方、エントリ部501のメモリアクセス要求がパイプライン制御部103から差し戻されて待機状態となっており、かつ要求格納部1のエントリ数に空きがあるときには、アンドゲート513の出力はオフとなる。この場合にはさらに、アンドゲート群511の出力が判定される。アンドゲート群511は、例えばバンク(bank)0から7までの8バンクに対応して8つのアンドゲートから構成されている。アンドゲート群511の各アンドゲートには、対応するエントリ部501のPAデータ中のバンクアドレス(例えば9〜7ビット目)をバンクアドレスデコーダ510でデコードした結果が入力される。すなわち、バンクアドレスデコーダ510は、上記バンクアドレスをデコードすることによって、バンク0〜7に対応する8本のうちのいずれか1本の出力がオンになるような複数の出力線を有する。これらの出力線のそれぞれが、アンドゲート群511の各アンドゲートに入力している。また、アンドゲート群511の各アンドゲートには、対応するエントリ部501のWAITフラグが入力する。さらに、アンドゲート群511の各アンドゲートには、バンクアボート生成部401が生成した各バンク毎の要求待機通知514が入力する。例えば、アンドゲート群511中のバンク0に対応するアンドゲートには、WAITフラグと、PAデータのバンクアドレスがバンク0に等しいときにオンとなりそれ以外のときにオフとなる信号と、バンク0に対応する要求待機通知514が入力する。
On the other hand, when the memory access request of the
例えば、バンク0に対応する要求待機通知514は、バンクアボート生成部401によって、現在DIMM110に対して要求されているバンク0に対応するメモリアクセス要求の数が所定値を超えたときに、オンとなる。従って、アンドゲート群511中のバンク0に対応するアンドゲートは、対応するエントリ部501のメモリアクセス要求が待機中で、その要求のバンクアドレスがバンク0で、バンク0への現在の主記憶アクセスが所定数を超えているときにオンとなる。この結果、オアゲート512を介して上記エントリ部501に対応するエントリ出力ゲート502がオフとなり、上記エントリ部501で待機中のバンク0を要求するメモリアクセス要求のパイプライン制御部103への投入が抑止される。これにより、現在主記憶アクセスが他のバンク1〜バンク7よりも多くなっているバンク0へのメモリアクセス要求の集中が回避される。
For example, the
バンク1〜7についても、バンク0の場合と同様の制御動作が実行される。
以上のようにして、バンク待機制御部402の機能により、エントリ部501において待機中のメモリアクセス要求について、一部のバンクへのメモリアクセス要求が集中することを回避して、各バンクへのメモリアクセス要求の投入を均等化することが可能となる。The same control operation as in the case of bank 0 is executed for
As described above, the function of the bank
図5Bは、図4Aのパイプライン制御部103とその周辺回路の詳細な回路構成図である。
図5Aの新規要求格納部102内のパイプ投入エントリ選択部503から出力されたメモリアクセス要求は、図5Bのパイプ投入制御部520を介してパイプライン制御部103が制御するL2−PIPEパイプライン(図2参照)に投入される。FIG. 5B is a detailed circuit configuration diagram of the
The memory access request output from the pipe entry
パイプライン制御部103は、タグ読み出し制御部521、その他各種パイプアボート条件生成部522と、要求格納部1資源カウンタ523と、アボート用オアゲート524と、パイプラインコマンド生成部525を備える。
The
タグ読み出し制御部521は、パイプ投入制御部520からL2−PIPEのパイプラインに投入されたメモリアクセス要求について、次の処理を実行する。まず、メモリアクセス要求中のアドレスデータをパイプアドレス530として、その例えば18ビット目から7ビット目を取り出してインデックスであるタグ読み出しアドレス533を生成する。次に、タグ読み出し制御部521は、上記パイプアドレス530の例えば39ビット目から19ビット目を取り出して要求タグを生成する。そして、タグ読み出し制御部521は、キャッシュタグ部105にタグ読み出し通知532を出力すると共に、タグ読み出しアドレス533を出力する。この結果、キャッシュタグ部105において、タグ読み出しアドレス533に対応するキャッシュラインが指定され、そのキャッシュラインに対応する各キャッシュウェイに記憶されている各タグデータが読み出される。そして、キャッシュタグ部105において、各タグデータのいずれかが、タグ読み出し制御部521で生成されている要求タグに一致するか否かが比較される。
The tag read
いずれかのタグデータが要求タグに一致すると、タグ読み出し制御部521においてキャッシュヒットが判定され、一致したタグがタグ読み出し出力としてキャッシュタグ部105からキャッシュデータ部106に出力される。この結果、キャッシュデータ部106上で、タグ読み出しアドレス533に対応するキャッシュラインの、一致が検出されたタグ読み出し出力に対応するキャッシュウェイから、キャッシュデータが読み出される。そして、このキャッシュデータが、キャッシュデータ部読み出し出力データ535として、後述する図5Cのデータ応答562と連結することにより、CPUデータ応答563として、図5AのCPUコア部100に応答される。このとき、パイプラインコマンド生成部525からパイプライン処理成功通知(エントリ開放通知)529が図5Aの新規要求格納部102に出力される。この結果、前述した図5Aの該当するエントリ部501において、該当するエントリ部501のVALフラグとHLDフラグとWAITフラグがリセットされて、新規要求格納部102の該当するエントリが開放される。
When any tag data matches the request tag, the tag read
いずれのタグデータも要求タグに一致せず、タグ読み出し制御部521でキャッシュミスが判定されると、アボート用オアゲート524で、要求格納部1へのメモリアクセス要求の発行が可能か否かについて判定される。まず、アボート用オアゲート524は、その他各種パイプアボート条件生成部522からアボート条件がオンになっているか否かを判定する。また、アボート用オアゲート524は、要求格納部1資源カウンタ523がカウントフル(FULL)を示す値1の要求格納部1資源カウンタ値515を出力しているか否かを判定する。また、アボート用オアゲート524は、図4Aの要求格納部1から、すでに同一アドレスのメモリアクセス要求を投入済みであることを示すアドレスマッチ通知558を通知されているか否かを判定する。さらに、アボート用オアゲート524は、図4Aのバンクアボート生成部401から、バンクアボート通知539を通知されているか否かを判定する。
If none of the tag data matches the request tag and the tag read
アボート用オアゲート524は、上記いずれの判定も成立しないときに、パイプラインコマンド生成部525に対するアボート出力をオフとする。この結果、パイプラインコマンド生成部525は、図4Aの要求格納部1上の空きエントリを検索し、キャッシュミスを発生させたメモリアクセス要求とともに、要求格納部1エントリ獲得通知527を、要求格納部1に通知する。これ以降、要求格納部1および要求格納部2を介して、主記憶アクセスが実行されキャッシュミスしたデータが取得される。上述のキャッシュミスに対するパイプライン処理が成功すると、パイプラインコマンド生成部525からパイプライン処理成功通知(エントリ開放通知)529が図5Aの新規要求格納部102に出力される。この結果、前述した図5Aの該当するエントリ部501において、該当するエントリ部501のVALフラグとHLDフラグとWAITフラグがリセットされて、その新規要求格納部102の該当するエントリが開放される。
The abort OR
パイプライン制御部103内の要求格納部1資源カウンタ値515は、パイプラインコマンド生成部525から要求格納部1エントリ獲得通知527が発行され要求格納部1にメモリアクセス要求が登録されたときにプラス1(インクリメント)される。また、パイプラインコマンド生成部525からパイプライン処理成功通知(エントリ開放通知)529が発行され要求格納部1のエントリが開放されたときにマイナス1(デクリメント)される。すなわち、要求格納部1資源カウンタ523は、要求格納部1で現在使用中のエントリ数をカウントしている。そして、要求格納部1のエントリ数に空きがあるときには要求格納部1資源カウンタ値515は0、空きがないときには要求格納部1資源カウンタ値515は1となる。要求格納部1資源カウンタ523がカウントフル(FULL)を示す値1の要求格納部1資源カウンタ値515を出力しており、アボート用オアゲート524の出力がオンになると、パイプラインコマンド生成部525に対してアボートが設定される。この結果、パイプラインコマンド生成部525は、図4Aおよび図5Aの新規要求格納部102に、パイプライン差し戻し通知528を出力する。この結果、図5Aのリセット用オアゲート504を介してHLDフラグがリセットされるとともに、WAITフラグがセットされる。これにより、エントリ部501内のメモリアクセス要求は待機状態となる。さらに、値1の要求格納部1資源カウンタ値515が新規要求格納部102に出力される。この結果、前述したようにして、図5Aにおいて、アンドゲート513の出力がオンとなり、オアゲート512を介してエントリ出力ゲート502がオフとなる。これにより、待機状態となっているメモリアクセス要求のパイプライン制御部103への投入が抑止される。以上のようにして、要求格納部1に過剰なメモリアクセス要求の発行が抑止される。
The
また、図4Aの要求格納部1から、すでに同一アドレスのメモリアクセス要求を投入済みであることを示すアドレスマッチ通知558を通知されると、アボート用オアゲート524がオンとなる。この結果、パイプラインコマンド生成部525に対して、アボートが設定される。このような場合には、パイプライン制御部103が要求格納部1に対して発行しようとするメモリアクセス要求のアドレスのデータは、現在、要求格納部1のエントリに格納されていてそのエントリを占有している状態であるため、再度主記憶アクセスを行う必要はない。このため、パイプラインコマンド生成部525は、アドレスマッチ通知558を受信した場合には、新規要求格納部102に対してパイプライン差し戻し通知528を通知する。この結果、図5Aのリセット用オアゲート504を介してHLDフラグがリセットされるとともに、WAITフラグがセットされる。これにより、エントリ部501内のメモリアクセス要求は待機状態となる。要求格納部1中の該当するメモリアクセス要求が実行されてキャッシュタグ部105とキャッシュデータ部106が更新された後に、新規要求格納部102中の同じアドレスを要求する待機状態のメモリアクセス要求がパイプラインに再度投入される。これにより、当該メモリアクセス要求がキャッシュヒットし、キャッシュデータ部106からキャッシュデータ部読み出し出力データ535が要求元のCPUコア部100にロードされる。
When the
さらに、図4Aのバンクアボート生成部401からバンクアボート通知539が通知されると、アボート用オアゲート524がオンとなって、パイプラインコマンド生成部525にアボートが設定される。バンクアボート生成部401は、要求格納部1と要求格納部2に保持されたメモリアクセス要求に基づき、主記憶部のDIMM110に対するメモリアクセス要求の数をバンク毎に計数する。これとともに、計数したバンク毎のメモリアクセス要求の数のいずれかが所定値を超えた場合に、パイプライン制御部103に主記憶アクセスの中断を指示するバンクアボート通知539を通知する。これにより、パイプラインコマンド生成部525は、新規要求格納部102に対してパイプライン差し戻し通知528を出力する。この結果、新規要求格納部102の該当するエントリ部501は開放されず、待機状態となって、該当するメモリアクセス要求の実行が遅らされる。前述した図5Aのバンク待機制御部402の動作と併せて、上述のバンクアボート生成部401からのバンクアボート通知539を使った制御動作により、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることができる。さらに、他のバンクと比較して発行の頻度が少ないバンクのメモリアクセス要求を優先的に、DIMM110に発行させることができる。これにより、メモリアクセス要求の発行状態が、自然に図3(b)に例示したように、常時多様な種類のバンクのメモリアクセス要求が要求格納部1や2に格納される状態にすることができ、バンクアクセスの均等化を図ることが可能となる。
Further, when the
アボート用オアゲート524では、その他各種パイプアボート条件生成部522から様々なアボート条件がオンになっているか否かを判定し、その判定結果に応じて、パイプラインコマンド生成部525に対してアボートを設定する。
The abort or
図5Cは、図4Aの要求格納部1 104の詳細な回路構成図である。
要求格納部1は、エントリ部550、エントリ出力ゲート551、パイプ投入エントリ選択部552、リセット用オアゲート553を備える。エントリ部550は、複数のメモリアクセス要求をパイプライン処理可能なように、複数実装される。エントリ出力ゲート551およびリセット用オアゲート553も、各エントリ部550に対応して複数実装される。また、要求格納部1は、各エントリ部550に対応して、次の構成を有する。まず、対応するエントリ部550のPAデータとパイプライン制御部103から与えられるパイプアドレス530との一致を検出するための比較(一致検出)回路554を備える。また、対応するエントリ部550のVALフラグと、パイプライン制御部103から与えられるパイプアドレスマッチ検出指示531のオンを条件に、比較(一致検出)回路554の出力を出力するアンドゲート555を備える。さらに、各エントリ部550ごとのアンドゲート555の出力のオアを演算して、アドレスマッチ通知558として図5Bのパイプライン制御部103内のアボート用オアゲート524に与えるアドレスマッチ用オアゲート556を備える。さらに、要求格納部1は、主記憶部であるDIMM110からの主記憶データ応答561を一時保持する。その後、主記憶データ応答561は、図5Bのキャッシュデータ部106にキャッシュデータ部書き込みデータ538として、または図5AのCPUコア部100にCPUデータ応答563として転送される。FIG. 5C is a detailed circuit configuration diagram of the request storage unit 1104 of FIG. 4A.
The
図5Bのパイプラインコマンド生成部525から、要求格納部1エントリ獲得通知527と主記憶アクセスのためのメモリアクセス要求が通知されると、次の動作が実行される。要求格納部1の該当するエントリ部550において、要求格納部1エントリ獲得通知527によって、VALフラグがセット(set)され、PAデータとしてアクセスを要求する物理アドレスデータが書き込まれる。VALフラグは、そのエントリ部550に設定されているメモリアクセス要求が有効であるか否かを示すフラグである。物理アドレスデータは、前述した図5Aのエントリ部501のPAデータと同様の形式を有し、例えば40ビットで構成される。RDYフラグおよびHLDフラグは、最初はリセットされる。RDYフラグは、要求応答パイプ(図2のシーケンスS12参照)への投入準備が完了したことを示すフラグである。HLDフラグは、そのエントリ部550のメモリアクセス要求がL2キャッシュ制御部101の要求応答パイプにおいて処理中であることを示すフラグである。
When the pipeline
上述の要求格納部1のエントリ部550への登録と並行して、図5Bのパイプラインコマンド生成部525から要求格納部1エントリ獲得通知527とともに通知された主記憶アクセスのためのメモリアクセス要求が、要求格納部2にも登録される。要求格納部1から要求格納部2へのメモリアクセス要求の転送は、図4AのCPU側バスインタフェース部111からシステムバスを経由して図4Bのシステムコントローラ側バスインタフェース部112を介して実行される。要求格納部1と要求格納部2が連携して動作するための制御は、図2で前述した動作シーケンスと同様である。すなわち、システムコントローラチップ107内の要求格納部2に保持されたメモリアクセス要求は、処理可能なバンクアドレスを有するものから順にDIMMアクセス制御部109によって読み出され、DIMM110のアクセス用の主記憶アクセスパイプに投入される。DIMMアクセス制御部109は、要求格納部2から処理可能なバンクアドレスメモリアクセス要求に対応するコマンドとアドレスを生成し、DIMM110に対してメモリアクセスを実行する。DIMM110におけるメモリアクセスが完了すると、DIMM110から要求格納部1内のデータバッファ557に対して、主記憶データ応答561が送信される。要求格納部2からデータバッファ557へのデータ応答は、図4Bのシステムコントローラ側バスインタフェース部112からシステムバスを経由して図4AのCPU側バスインタフェース部111を介して実行される。
In parallel with the registration of the
上記主記憶データ応答561の送信に基づいて、図5Cの該当するエントリ部550において、RDYフラグがセットされる。ここで、エントリ出力ゲート551は、各エントリ部550に対応して設けられ、各エントリ部550の出力を有効にするか否かを決定する。エントリ出力ゲート551は、エントリ部550のVALフラグがオンで、HLDフラグがオフで、RDYフラグがオンのときにオンとなる。上述したように、エントリ部550のメモリアクセス要求に対応する主記憶データ応答561がDIMM110から返されたときにRDYフラグがオンとなる。これにより、そのエントリ部550に対応するエントリ出力ゲート551がオンとなって、そのメモリアクセス要求をパイプ投入エントリ選択部552に出力する。
Based on the transmission of the main
パイプ投入エントリ選択部552は、出力がオンとなっているエントリ出力ゲート551に対応するエントリ部550に保持されているメモリアクセス要求のうちから、所定の規則に従って(例えば古い順に)メモリアクセス要求を選択する。そして、その選択したメモリアクセス要求を、図5Bのパイプ投入制御部520に投入する。このとき、パイプ投入エントリ選択部552の出力に従って、該当するエントリ部550のHLDフラグがセットされる。この結果、そのエントリ部550に対応するエントリ出力ゲート551は必ずオフとなる。そして、パイプライン制御部103からのパイプライン差し戻し通知528がオンとなってリセット用オアゲート553を介してHLDフラグがリセットされない限り、そのエントリ部550のメモリアクセス要求は再びパイプ投入制御部520に投入されることはない。つまり、そのエントリ部550では、そのメモリアクセス要求がパイプライン制御部103へ投入されてからその実行結果が待たれることになる。この結果、パイプライン制御部103上で、要求応答パイプが起動される(図2のシーケンスS11参照)。
The pipe entry
要求応答パイプにおいてアボート(中止)条件が発生しない場合には、パイプライン制御部103は、キャッシュデータ部106への主記憶データ応答561の書き込みとキャッシュタグ部105のタグの更新を実行する(図2のシーケンスS12)。より具体的には、図5Bのパイプラインコマンド生成部525は、図5Cのパイプ投入エントリ選択部552から図5Bのパイプ投入制御部520に投入されたメモリアクセス要求に従って、次の動作を実行する。まず、このメモリアクセス要求中のアドレスデータの、例えば18ビット目から7ビット目を取り出してインデックスであるタグ更新アドレス537を生成する。次に、パイプラインコマンド生成部525は、上記アドレスデータの例えば39ビット目から19ビット目を取り出して要求タグを生成する。そして、パイプラインコマンド生成部525は、キャッシュタグ部105にタグ更新通知536を出力すると共に、タグ更新アドレス537を出力する。この結果、キャッシュタグ部105において、タグ更新アドレス537に対応するキャッシュラインが指定され、そのキャッシュラインに対応する各キャッシュウェイのうちの1つのキャッシュブロックが追い出される。そして、そのキャッシュブロックに、要求タグが新たに上書きされる。これと共に、キャッシュデータ部106上の上記キャッシュブロックに対応する領域に、図5Cのデータバッファ557に一時保持されたデータ応答562が、キャッシュデータ部書き込みデータ538として書き込まれる。上記動作と共に、上記データ応答562は、CPUデータ応答563として、図5AのCPUコア部100へ転送される(図2のシーケンスS13参照)。なお、CPUコア部100へのデータ応答は、メモリアクセス要求が、ロード要求であって、かつプリフェッチ要求でない場合に実行される。
When an abort condition is not generated in the request response pipe, the
以上の要求応答パイプの動作の後、図5Bのパイプラインコマンド生成部525は、要求格納部1に、該当するメモリアクセス要求のエントリの開放を、パイプライン処理成功通知(エントリ開放通知)529として通知する(図2のシーケンスS14参照)。この通知に基づいて、図5Cにおいて、該当するエントリ部550のVALフラグとRDYフラグとHLDフラグがリセットされ、要求格納部1の該当するエントリ部550が開放される。
After the above operation of the request response pipe, the pipeline
パイプライン制御部103における要求応答パイプラインが何らかの要因によりアボートした場合、図5Bのパイプラインコマンド生成部525から図5Cの要求格納部1に、パイプライン差し戻し通知528が通知される。この結果、図5Cのリセット用オアゲート553を介して該当するエントリ部550のHLDフラグがリセットされる。この結果、そのエントリ部550に対応するエントリ出力ゲート551が再度そのエントリのメモリアクセス要求を選択可能となり、パイプ投入エントリ選択部552を介して図5Bのパイプ投入制御部520への再度の投入が試行される。
When the request response pipeline in the
パイプライン制御部103から要求格納部1にメモリアクセス要求が登録されたとき、各エントリ部550毎に、比較(一致検出)回路554が、各エントリ部550に登録されているPAアドレスとパイプライン制御部103から通知されているパイプアドレス530との一致を検出する。そして、各アンドゲート555が、各エントリ部550のVALフラグと、パイプライン制御部103から与えられるパイプアドレスマッチ検出指示531のオンを条件に、各比較(一致検出)回路554の検出結果を出力する。この結果、いずれかの有効なエントリ部550のPAアドレスとパイプアドレス530が一致した場合、オアゲート556を介して出力されるアドレスマッチ通知558がオンとなる。前述したように、図5Bにおいて、要求格納部1からアドレスマッチ通知558を通知されると、アボート用オアゲート524がオンとなって、パイプラインコマンド生成部525に対して、アボートが設定される。このようにして、重複する無駄な主記憶アクセスの発生が抑止される。
When a memory access request is registered in the
図5Dは、図4Aのバンクアドレス均等制御部(バンクアボート生成部)401の詳細な回路構成図である。
バンクアボート生成部401は、バンクアドレスデコーダ540、カウントアップ用アンドゲート群541、カウンタ群542、大小比較回路群544、バンクアドレスデコーダ548、カウントダウン用アンドゲート群549を備える。また、バンクアボート生成部401は、バンクアドレスデコーダ545と、バンクアボート通知用アンドゲート群546と、バンクアボート通知用オアゲート547を備える。FIG. 5D is a detailed circuit configuration diagram of the bank address equalization control unit (bank abort generation unit) 401 of FIG. 4A.
The bank
カウンタ群542は、要求格納部1と要求格納部2に保持されたメモリアクセス要求に基づき、主記憶部のDIMM110に対するメモリアクセス要求の数を、バンク(bank)0〜7の各バンク毎に計数する。
The
この計数を実現するために、カウントアップ用アンドゲート群541は、例えばバンク(bank)0から7までの8バンクに対応して8つのアンドゲートから構成されている。カウントアップ用アンドゲート群541の各アンドゲートには、図5Bのパイプラインコマンド生成部525から入力するパイプバンクアドレス526をバンクアドレスデコーダ540でデコードした結果が入力される。デコード部540は、パイプバンクアドレス526をデコードすることによって、バンク0〜7に対応する8本のうちのいずれか1本の出力がオンになるような複数の出力線を有する。これらの出力線のそれぞれが、カウントアップ用アンドゲート群541の各アンドゲートに入力している。そして、パイプバンクアドレス526がバンク0を示していればバンクアドレスデコーダ540の出力のうちbank0のみがオンとなり、他のbank1〜7はオフとなる。パイプバンクアドレス526がバンク1を示していればバンクアドレスデコーダ540の出力のうちbank1のみがオンとなり、他の出力はオフとなる。バンク2〜7についても同様である。また、カウントアップ用アンドゲート群541の各アンドゲートには、図5Bのパイプラインコマンド生成部525から入力する要求格納部1エントリ獲得通知527が入力する。この結果、パイプラインコマンド生成部525から要求格納部1エントリ獲得通知527が発行されたメモリアクセス要求が要求格納部1および2に登録されるタイミングで、次の制御が実行される。上記メモリアクセス要求に対応するパイプバンクアドレス526が示すバンクに対応するカウントアップ用アンドゲート群541内のアンドゲートの出力がオンとなり、そのバンクに対応するカウンタ群542内のカウンタがカウントアップされる。
In order to realize this counting, the count-up AND
一方、図5Cの要求格納部2からDIMMアクセス制御部109にメモリアクセス要求が読み出されるタイミングで、要求格納部2の開放を示す要求格納部2エントリ開放通知559が、図5Cの要求格納部2から出力される。また、要求格納部2から、読み出されたメモリアクセス要求のバンクを示す要求格納部2開放バンクアドレス560が出力される。これらの、要求格納部2エントリ開放通知559と要求格納部2開放バンクアドレス560は、図5Dのバンクアボート生成部401に入力する。要求格納部2からバンクアボート生成部401への上記2つのデータの転送は、図4Bのシステムコントローラ側バスインタフェース部112からシステムバスを経由して図4AのCPU側バスインタフェース部111を介して実行される。ここで、カウントダウン用アンドゲート群549は、例えばバンク0から7までの8バンクに対応して8つのアンドゲートから構成されている。カウントダウン用アンドゲート群549の各アンドゲートには、図5Cの要求格納部2から入力する要求格納部2開放バンクアドレス560をバンクアドレスデコーダ548でデコードした結果が入力される。すなわち、バンクアドレスデコーダ548は、要求格納部2開放バンクアドレス560をデコードすることによって、bank0〜7に対応する8本のうちのいずれか1本の出力がオンになるような複数の出力線を有する。これらの出力線のそれぞれが、カウントダウン用アンドゲート群549の各アンドゲートに入力している。そして、要求格納部2開放バンクアドレス560がバンク0を示していればバンクアドレスデコーダ548の出力のうちbank0のみがオンとなり、他のbank1〜7はオフとなる。バンク1〜7についても同様である。また、カウントダウン用アンドゲート群549の各アンドゲートには、図5Cの要求格納部2から要求格納部2エントリ開放通知559が入力する。この結果、要求格納部2からメモリアクセス要求が読み出されて主記憶アクセスされたタイミングで、次の制御が実行される。上記メモリアクセス要求に対応する要求格納部2開放バンクアドレス560が示すバンクに対応するカウントダウン用アンドゲート群549内のアンドゲートの出力がオンとなり、そのバンクに対応するカウンタ群542内のカウンタがカウントダウンされる。
On the other hand, at the timing when the memory access request is read from the
以上のようにして、カウンタ群542は、図4AのL2キャッシュ制御部101から図4BのDIMM110に対して現在仕掛かっているメモリアクセス要求の数を、バンク毎に計数することができる。
As described above, the
次に、大小比較回路群544内の各大小比較回路は、カウンタ群542内のバンク毎の各カウンタ値と、閾値設定レジスタ543に設定されている閾値とで、それぞれ大小比較を行う。各大小比較回路の比較結果は各バンク毎の要求待機通知514として出力され、図5Aのバンク待機制御部402に出力される。前述したように、図4Aまたは図5Aのバンク待機制御部402は、新規要求格納部102のエントリ部550で待機中のメモリアクセス要求のうち、上記要求待機通知514に対応するバンクアドレスを要求するメモリアクセス要求の出力を抑止する。この結果、カウンタ群542における該当するバンクに対応するメモリアクセス要求の計数値が所定値を下回るまで、該当するメモリアクセス要求のL2キャッシュ制御部101のパイプラインへの投入が抑止される。
Next, each size comparison circuit in the size
バンクアボート通知用アンドゲート群546は、例えばバンク(bank)0から7までの8バンクに対応して8つのアンドゲートから構成されている。バンクアボート通知用アンドゲート群546の各アンドゲートには、図5Bのパイプラインコマンド生成部525から入力するパイプアドレス530のうちパイプバンクアドレス部分をバンクアドレスデコーダ545でデコードした結果が入力される。すなわち、バンクアドレスデコーダ545は、パイプアドレス530のうちパイプバンクアドレス部分をデコードすることによって、バンク0〜7に対応する8本のうちのいずれか1本の出力がオンになるような複数の出力線を有する。これらの出力線のそれぞれが、アンドゲート群546の各アンドゲートに入力している。そして、パイプバンクアドレスがバンク0を示していればバンクアドレスデコーダ545の出力のうちbank0のみがオンとなり、他のbank1〜7はオフとなる。バンク1〜7についても同様である。また、バンクアボート通知用アンドゲート群546の各アンドゲートには、図5Bのパイプライン制御部103から入力するパイプアドレスマッチ検出指示531が入力する。さらに、バンクアボート通知用アンドゲート群546の各アンドゲートには、大小比較回路群544の各大小比較回路の比較結果出力が入力する。この結果、パイプライン制御部103からパイプアドレス530が入力したときに、そのバンクに対応するメモリアクセス要求の計数値が所定値を超えているなら、バンクアボート通知用アンドゲート群546の該当するアンドゲートの出力がオンとなる。これにより、バンクアボート通知用オアゲート547から出力されるバンクアボート通知539がオンとなって、図5Bのパイプライン制御部103内のアボート用オアゲート524がオンとなる。これにより、パイプラインコマンド生成部525は、アボート状態となり、新規要求格納部102に対してパイプライン差し戻し通知528を出力する。この結果、前述したように、新規要求格納部102の該当するエントリ部501は開放されず、待機状態となって、該当するメモリアクセス要求の実行が遅らされる。前述した図5Aのバンク待機制御部402の動作と併せて、上述のバンクアボート生成部401からのバンクアボート通知539を使った制御動作により、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることができる。さらに、他のバンクと比較して発行の頻度が少ないバンクのメモリアクセス要求を優先的に、DIMM110に発行させることができる。これにより、メモリアクセス要求の発行状態が、自然に図3(b)に例示したように、常時多様な種類のバンクのメモリアクセス要求が要求格納部1や2に格納される状態にすることができ、バンクアクセスの均等化を図ることが可能となる。
The bank abort notification AND
このバンクアクセスの均等化について、前述した図3(b)を例にとってより詳細に説明する。Core0〜3の各CPUコア部100から、同一バンクのメモリアクセス要求が連続して発行されるとする。この場合、図5Aの要求格納部0では、パイプ投入エントリ選択部503が、各CPUコア部100に対応するエントリ部501からメモリアクセス要求が選択してL2キャッシュメモリのパイプラインに投入する。このとき、図4Aのバンク待機制御部401、402が、同じバンクアドレスを有するメモリアクセス要求は一定数以上連続的には投入されないように制御する。例えば、図5Dのカウンタ群542の各バンクアドレスに対応するカウンタの計数の閾値が1であれば、同じバンクアドレスのメモリアクセス要求が2個以上パイプラインに投入されないように、バンク待機制御部401、402が制御する。この結果、要求格納部0では、異なるバンクアドレスを有するメモリアクセス要求が格納されているエントリ部501が優先的に選択されて、そのメモリアクセス要求がL2キャッシュのパイプラインに投入される。例えば、Core0,1,2,3に対応する4つのエントリ部501にほぼ同時に同じバンクアドレスの要求が格納された場合を考える。この場合、まずCore0のエントリ部501のバンクアドレス=0を有するメモリアクセス要求が選択されて、パイプラインに投入される。その直後、Core1,2,3の各エントリ部501には、同じバンクアドレス=0を有するメモリアクセス要求が格納されているなら、それらからの出力が全部抑止される。そして図3(b)に示すように、Core0のエントリ部501では、バンクアドレス=0のメモリアクセス要求がDIMM110に向けて出力された後にすぐに、Core1のCPUコア部100から次のバンクアドレス=4のメモリアクセス要求がDIMM110に向けて出力される。すなわち、バンクアドレス=0のメモリアクセス要求が格納されていたCore0のエントリ部501の次に選択されるエントリ部501は、バンクアドレス=4のメモリアクセス要求が格納されたCore1のエントリ部501ということになる。このようにして、バンクアドレス=0であるメモリアクセス要求の直ぐ後にバンクアドレス=4であるメモリアクセス要求が出力され、バンクのアクセス制御が均等化されるとともに、L2キャッシュのパイプラインは、ほぼ間断なく処理を続行できることになる。したがって本実施形態によれば図3(b)に示すようにバンク,0,4,2,6,1,5,3,7が均等にアクセスされ、Core0,1,2,3が均等にアクセスされる。そして、CPUコア部100が図3(b)の304に示すように間断なくDIMM110に対してアクセスできる。
The bank access equalization will be described in more detail with reference to FIG. 3B described above. It is assumed that memory access requests for the same bank are issued continuously from the
従来は、L2キャッシュのパイプラインに、連続処理できない同じバンクアドレスを有するメモリアクセス要求が多く滞留してしまい、主記憶部へのメモリアクセス要求の発行およびそれに対応するデータ応答も間欠的になってしまって、パイプラインの処理性能が大きく落ちるという結果を招いていた。これに対して本実施形態では、L2キャッシュのパイプラインは、ほぼ間断なく処理を行うことができるため、L2キャッシュ制御部101のスループットを向上させることが可能となる。 Conventionally, many memory access requests having the same bank address that cannot be processed continuously remain in the pipeline of the L2 cache, and issuance of memory access requests to the main storage unit and corresponding data responses are intermittent. This has resulted in a significant drop in pipeline processing performance. On the other hand, in the present embodiment, the L2 cache pipeline can perform processing almost without interruption, so that the throughput of the L2 cache control unit 101 can be improved.
ここで、Core1,2,3のメモリアクセス要求は、バンクアドレス=0が出力できるようになるまで待たされることになる。しかし、バンクアドレス=0の出力が可能な期間が経過した後は、次のCore1のバンクアドレス=0が優先的に選択された後、今度はそのCore1のメモリアクセス要求が連続して選択されるように制御すればよい。このようなアルゴリズムを図5Aのパイプ投入エントリ選択部552に持たせておけば、特定のCPUコア部100に処理が偏ることはない。
Here, the memory access requests for
図6は、上述した第1の実施形態の動作の処理過程を示すフローチャートである。
CPUコア1602がL2キャッシュ制御部101へ新規のメモリアクセス要求を発行し、この結果、要求格納部0(新規要求格納部102。以下同じ)のエントリ部501(図5A参照)にメモリアクセス要求が格納される(ステップS601)。FIG. 6 is a flowchart showing the process of the operation of the first embodiment described above.
The CPU core 1602 issues a new memory access request to the L2 cache control unit 101. As a result, the memory access request is sent to the entry unit 501 (see FIG. 5A) of the request storage unit 0 (new
その後、図5Aにおいて、要求格納部0のエントリ部501からエントリ出力ゲート551、パイプ投入エントリ選択部552を介して、図5Bのパイプ投入制御部520に要求パイプが投入される(ステップS602)。
Thereafter, in FIG. 5A, the request pipe is input from the
パイプライン制御部103のタグ読み出し制御部521(図5B参照)では、キャッシュタグ部105を検索した結果、キャッシュミスが発生したか否かが判定される(ステップS603)。
The tag read control unit 521 (see FIG. 5B) of the
キャッシュヒットとなってステップS603の判定がNOの場合、図5Bのパイプラインコマンド生成部525において、要求パイプのパイプ処理が成功したか否かが判定される(ステップS604)。
When the cache hit occurs and the determination in step S603 is NO, the pipeline
パイプ処理が成功しステップS604の判定がYESの場合、図5Bのパイプラインコマンド生成部525から図5Aの要求格納部0にパイプライン処理成功通知(エントリ開放通知)529が通知される。この結果、要求格納部0の該当するエントリ部501において、VALフラグ、HLDフラグ、WAITフラグがリセットされ、そのエントリ部501が開放される(ステップS605)。
If the pipe process is successful and the determination in step S604 is YES, a pipeline process success notification (entry release notification) 529 is sent from the pipeline
パイプ処理が成功せずステップS604の判定がNOの場合、図5Bのパイプラインコマンド生成部525から図5Aの要求格納部0にパイプライン差し戻し通知528が通知される。この結果、該当するエントリ部501において、HLDフラグがリセット、WAITフラグがセットされ、そのエントリ部501のメモリアクセス要求は待機状態となる。これにより、要求格納部0からパイプライン制御部103への要求パイプの投入が繰り返し試行される(ステップS604→S602)。
If the pipe process is not successful and the determination in step S604 is NO, the pipeline return notification 528 is notified from the pipeline
パイプライン制御部103においてキャッシュミスとなってステップS603の判定がYESの場合、要求格納部1に空エントリがあるか否かが判定される(ステップS606)。この判定機能は、要求格納部1資源カウンタ523とアボート用オアゲート524により実現される。すなわち、要求格納部1資源カウンタ523のカウント値がフルとなって要求格納部1資源カウンタ値515が1を示せば、要求格納部1に空エントリがないと判定される。要求格納部1資源カウンタ値515が0を示していれば、要求格納部1に空エントリがあると判定される。
If the
要求格納部1に空エントリがありステップS606の判定がYESの場合、要求格納部1が保持するメモリアクセス要求の数が所定の閾値より小さいか否かが判定される(ステップS607)。具体的には、図5Dのバンクアボート生成部401の大小比較回路群544の要求バンクに対応する大小比較回路で、カウンタ群542の要求バンクに対応するカウンタ値が閾値設定レジスタ543に記憶された所定の閾値より小さいか否かが判定される。
If there is an empty entry in the
ステップS607の判定がYESならば、図5Dのバンクアボート生成部401から図5Bのアボート用オアゲート524には、バンクアボート通知539は発行されない。この結果、図5Bのパイプラインコマンド生成部525から図5Aの要求格納部0へ、要求開放指示としてパイプライン処理成功通知(エントリ開放通知)529が通知される。これにより、図5の要求格納部0の該当するエントリ部501において、VALフラグ、HLDフラグ、WAITフラグがリセットされて、そのエントリ部501が開放される。また、図5Bのパイプラインコマンド生成部525から図5Cの要求格納部1のエントリ部550と要求格納部2に、メモリアクセス要求とともに要求格納部1エントリ獲得通知527が発行される。パイプラインコマンド生成部525から要求格納部2への上記通知は、図4Bのシステムコントローラ側バスインタフェース部112からシステムバスを経由して図4AのCPU側バスインタフェース部111を介して実行される。この結果、パイプライン制御部103から要求格納部1、要求格納部2へメモリアクセス要求が発行される。また、要求格納部1エントリ獲得通知527により、図5Dのバンクアボート生成部401では、カウンタ群542において要求バンクのカウンタのカウント値(バンク格納数)がプラス1(インクリメント)される。この機能は、図5Dの、バンクアドレスデコーダ540とカウントアップ用アンドゲート群541により実現される(以上、ステップS608)。
If the determination in step S607 is YES, the
次に、要求格納部1、要求格納部2へのメモリアクセス要求の発行時点で、図5Dのバンクアボート生成部401からはバンクアボート通知539は出力されていないため、要求バンクが処理可能となっている。このため、DIMMアクセス制御部109が要求格納部2からメモリアクセス要求を選択することができ、DIMM110へのアクセスが実行される。これと同時に、図5Cの要求格納部2から図5Dのバンクアボート生成部401へ要求格納部2エントリ開放通知559が通知される。この結果、図5Dのバンクアボート生成部401では、カウンタ群542において要求バンクのカウンタのカウント値(バンク格納数)がマイナス1(デクリメント)される。この機能は、図5Dの、バンクアドレスデコーダ548とカウントダウン用アンドゲート群549により実現される(以上、ステップS609)。
Next, when the memory access request to the
上記DIMM110へのアクセスの結果、主記憶部であるDIMM110から要求格納部1のデータバッファ557に対して主記憶データ応答561が転送される(ステップS610)。
As a result of the access to the
続いて、主記憶データ応答561の転送を受けて、要求格納部1から要求応答パイプが投入される(ステップS611)。この機能は、図5Cの要求格納部1の該当するエントリ部550においてRDYフラグがセットされた後、該当するエントリ出力ゲート551がオンとなり、パイプ投入エントリ選択部552によってそのエントリが選択される動作として実現される。
Subsequently, in response to the transfer of the main
この結果、図5Bのパイプラインコマンド生成部525において、パイプ処理が成功したか否かが判定される(ステップS612)。
As a result, the pipeline
パイプ処理が成功せずステップS612の判定がNOならば、パイプライン制御部103から要求格納部1にパイプライン差し戻し通知528が発行される。この結果、図5Cの要求格納部1の該当するエントリ部550において、HLDフラグがリセットされることにより、該当するエントリ出力ゲート551がオンになる。この結果、要求格納部1のパイプ投入エントリ選択部552は、該当するエントリ部550のメモリアクセス要求について要求応答パイプへの投入を繰り返し実行する(ステップS612→S611)。
If the pipe processing is not successful and the determination in step S612 is NO, the
パイプ処理が成功しステップS612の判定がYESならば、パイプライン制御部103がキャシュ(キャッシュタグ部105、キャッシュデータ部106)にデータを登録する。その後、パイプライン制御部103から要求格納部1にパイプライン処理成功通知(エントリ開放通知)529が発行される。この結果、図5Cの要求格納部1の該当するエントリ部550において、VALフラグ、RDYフラグ、HLDフラグがリセットされ、そのエントリ部550が開放される(ステップS613)。
If the pipe process is successful and the determination in step S612 is YES, the
そして、CPUコア1602からのメモリアクセス要求が、ロード要求であってかつプリフェッチ要求でない場合に、図5Cの要求格納部1内のデータバッファ557からメモリアクセス要求を要求した図5AのCPUコア1602(要求コア)へ、CPUデータ応答563が転送される(ステップS614)。以上により、1つのメモリアクセス要求に対する処理が終了する。
When the memory access request from the CPU core 1602 is a load request and not a prefetch request, the CPU core 1602 of FIG. 5A (requested from the
前述したステップS606またはS607の判定がNOの場合には、以下の制御処理が実行される。ステップS606の判定がNOの場合とは、図5Bの要求格納部1資源カウンタ523のカウント値がフルとなって要求格納部1資源カウンタ値515が1を示し、要求格納部1に空エントリがないと判定された場合である。ステップS607の判定がNOの場合とは、次の場合である。図5Dのバンクアボート生成部401の大小比較回路群544の要求バンクに対応する大小比較回路で、カウンタ群542の要求バンクに対応するカウンタ値が閾値設定レジスタ543に記憶された所定の閾値以上になっていると判定された場合である。
When the determination in step S606 or S607 described above is NO, the following control process is executed. If the determination in step S606 is NO, the count value of the
まず、パイプライン制御部103から要求格納部0に、パイプライン差し戻し通知528が通知される(ステップS615)。この結果、図5Aの要求格納部0において、該当するエントリ部501のWAITフラグがセットされ、そのエントリ部501のメモリアクセス要求が待機状態となる(ステップS616)。
First, a pipeline return notification 528 is notified from the
次に、上記待機状態において、図5Bの要求格納部1資源カウンタ523のカウント値がフルとならずに要求格納部1資源カウンタ値515が0を示して、要求格納部1に空エントリが生じたか否かが判定される(ステップS617)。この機能は、図5Aのアンドゲート513によって実現される。
Next, in the standby state, the count value of the
上記待機状態において、要求格納部1にまだ空エントリが生じておらずステップS617の判定がNOならば、ステップS616の待機状態が繰り返される(ステップS617→S616)。この場合には、図5Aにおいて、要求格納部1資源カウンタ値515が1を示し該当するエントリ部501のWAITフラグも1であるため、アンドゲート513の出力がオンとなり、オアゲート512の出力がオンとなる。この結果、エントリ出力ゲート502がオフとなって、該当するエントリ部501からのメモリアクセス要求の出力が抑止され、待機状態が維持される。
In the standby state, if no empty entry has yet occurred in the
上記待機状態において、要求格納部1に空エントリが生じステップS617の判定がYESになると、要求バンクについて、要求格納部1が保持するメモリアクセス要求の数が所定の閾値より小さくなったか否かが判定される(ステップS618)。具体的には、図5Aにおいて、まず要求格納部1資源カウンタ値515が0となることによりアンドゲート513の出力がオフとなる。この結果、アンドゲート群511の機能が有効になる。アンドゲート群511の各バンクに対応するアンドゲートには、図5Dの大小比較回路群544の各大小比較回路から、各バンクに対応する要求待機通知514が入力している。図5Dのバンクアボート生成部401の大小比較回路群544の各大小比較回路で、カウンタ群542の対応するカウンタ値が閾値設定レジスタ543に記憶された所定の閾値以上になると、その大小比較回路が出力する要求待機通知514がオンになる。また、各アンドゲート群511は、各エントリ部501に対応して実装されており、各エントリ部501に登録されているPAアドレスのバンクアドレス部分をバンクアドレスデコーダ510でデコードした結果によって、アンドゲート群511において、エントリ部501のPAアドレスのバンクアドレスに対応するアンドゲートのみがオンになる。この結果、現在処理対象となっているエントリ部501の要求バンクに対応するアンドゲート群511内のアンドゲートにおいて、それに入力している要求待機通知514がオフであるかオンであるかが判定される。これにより、要求バンクについて、要求格納部1が保持するメモリアクセス要求の数が所定の閾値より小さくなったか否かが判定される。
In the standby state, when an empty entry occurs in the
要求格納部1が保持する数が閾値設定レジスタ543に記憶された所定の閾値より小さくなっておらずステップS618の判定がNOならば、ステップS616の待機状態、ステップS617の判定、ステップS618の判定が繰り返される。具体的には、現在処理対象となっているエントリ部501の要求バンクに対応するアンドゲート群511内のアンドゲートにおいて、それに入力している要求待機通知514がオンになっていれば、そのアンドゲートがオンになって、オアゲート512の出力がオンになる。この結果、該当するエントリ部501に対応するエントリ出力ゲート502がオフになって、そのエントリ部501のメモリアクセス要求の出力が抑止され、待機状態が維持される。
If the number stored in the
要求格納部1が保持する数が閾値設定レジスタ543に記憶された所定の閾値より小さくなりステップS618の判定がYESになると、ステップS602の処理に移動する。これにより、要求格納部0からパイプライン制御部103に要求パイプが投入されL2キャッシュ制御が実行される(ステップS618→S602)。具体的には、現在処理対象となっているエントリ部501の要求バンクに対応するアンドゲート群511内のアンドゲートにおいて、それに入力している要求待機通知514がオフになれば、そのアンドゲートがオフになる。また、アンドゲート群511内の他の全てのアンドゲートとアンドゲート513もオフになる。この結果、オアゲート512の出力がオフになり、該当するエントリ部501に対応するエントリ出力ゲート502がオンになって、そのエントリ部501のメモリアクセス要求が出力可能な状態になる。これにより、パイプ投入エントリ選択部552が、該当するエントリ部501のメモリアクセス要求を選択して、図5Bのパイプ投入制御部520に投入することにより、L2キャッシュ制御が実行される。
When the number stored in the
図7Aおよび図7Bは、図4Aおよび図4Bの第1の実施形態の構成を基本として、主記憶アクセスを行う部分が、主記憶アクセス機能外付けマルチコアCPUチップ1内に1チップとして実装されている第2の実施形態の構成図である。
FIGS. 7A and 7B are based on the configuration of the first embodiment of FIGS. 4A and 4B, and the main memory access part is mounted as a single chip in the main memory access function external
この構成では、図4AのCPU側バスインタフェース部111、図4Bのシステムコントローラ側バスインタフェース部112が省略され、さらに、図4Bの要求格納部2の機能も省略されて、要求格納部1に統合されている。要求格納部1が要求格納部2の機能を担っており、要求格納部1と要求格納部2の間の通信制御が省略される以外は、図4Aおよび図4Bの場合と同じ制御である。図7Aの新規要求格納部102、バンク待機制御部402、パイプライン制御部103、要求格納部1、およびバンクアボート生成部401の詳細な回路構成図は、第1の実施形態の図5A、図5B、図5C、図5Dと同様である。
In this configuration, the CPU side
第2の実施形態では、第1の実施形態の要求格納部2エントリ開放通知559および要求格納部2開放バンクアドレス560相当の情報が、要求格納部1から図7Aおよび図5Dのバンクアボート生成部401に出力される。これらの情報は、図7BのDIMMアクセス制御部109が図7Aの要求格納部1からメモリアクセス要求を読み出してDIMM110へのアクセスを実行する時点で出力される。
In the second embodiment, the
以上説明した第1および第2の実施形態により、主記憶に対する要求バンクが均等化され、何かのきっかけでバンクの偏りが発生しかかっても、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることができる。さらに、他のバンクと比較して発行の頻度が少ないバンクのメモリアクセス要求を優先的に、主記憶部に発行させることができる。これらの機能は、図5Dのバンクアボート生成部401と図5Aのバンク待機制御部402とからなる図4Aまたは図7Aのバンクアドレス均等制御部401、402により、実現される。これにより、メモリアクセス要求の発行状態が、自然に図3(b)に例示したように、常時多様な種類のバンクのメモリアクセス要求が要求格納部1や2に格納される高性能状態にすることができ、バンクアクセスの均等化を図ることが可能となる。いったん高性能時の状態に落ち着けば、ストリームアクセスなどにおいて、CPUコア部100間でもバンクのフェーズがずれた状態を維持しながら均等に処理される。
According to the first and second embodiments described above, the request banks for the main memory are equalized so that even if the bank is biased for some reason, the memory access requests for the same bank are not issued excessively. I can stop. Furthermore, it is possible to preferentially issue a memory access request of a bank that is issued less frequently than other banks to the main storage unit. These functions are realized by the bank address
上述の各実施形態の説明では、主記憶部に対するフェッチアクセス動作を中心に説明した。ライトバック制御を導入したキャッシュ制御においては、主記憶部に対するストア要求は、ソフトウエアでストアが発生し書き換えられたブロックが、新規要求によってリプレースされた場合に発生する。つまり要求格納部1にフェッチ要求が格納されると、そのフェッチ要求が確保したキャッシュのインデックス、ウエイに対してリプレース処理が行われる。リプレースされるブロックのバンクは要求格納部1の要求と同一のバンクである。すなわち、主記憶部のフェッチ要求に対するバンクの均等化が実現されると必然的に同時にストア要求に対するバンクの均等化も同時に実現されるので、ストア要求に対するバンクの均等化処理を明示的に導入する必要はない。つまり、上記各実施形態の構成により、十分な性能のバンク均等化処理を実現することが可能になる。
In the above description of each embodiment, the description has focused on the fetch access operation for the main storage unit. In cache control using write-back control, a store request to the main storage unit occurs when a block that has been stored and rewritten by software is replaced by a new request. That is, when a fetch request is stored in the
Claims (12)
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第1の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第2の要求保持部と、
前記第1の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第2の要求保持部に保持するキャッシュ制御部と、
前記第2の要求保持部に保持されたメモリアクセス要求のうち、処理が中断されなかったメモリアクセス要求を保持する第3の要求保持部と、
前記第2の要求保持部と前記第3の要求保持部とに保持されたメモリアクセス要求に基づき前記記憶装置に対するメモリアクセス要求の数をバンク毎に計数し、計数したいずれかのバンクのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第1の要求保持部に保持された、メモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の処理の中断を指示するアクセス計数部と、
前記第3の要求保持部に保持されたメモリアクセス要求を前記記憶装置に発行する主記憶制御部と、
を有することを特徴とする演算処理装置。In an arithmetic processing unit connected to a storage device having a plurality of banks,
An instruction processing unit for issuing a memory access request;
A cache memory having a plurality of cache lines for holding data;
A first request holding unit that inputs a memory access request issued by the instruction processing unit;
A second request holding unit for holding a memory access request in which a cache miss has occurred;
A cache control unit that searches the cache memory based on a memory access request input from the first request holding unit and holds a memory access request in which a cache miss has occurred in the second request holding unit;
Of the memory access requests held in the second request holding unit, a third request holding unit holding a memory access request whose processing has not been interrupted;
Based on the memory access requests held in the second request holding unit and the third request holding unit, the number of memory access requests to the storage device is counted for each bank, and the memory access of any bank that has been counted When the number of requests exceeds a predetermined value, the cache control unit is instructed to interrupt the processing of the memory access request for the bank held in the first request holding unit and the number of memory access requests exceeds the predetermined value. An access counting unit,
A main storage control unit that issues a memory access request held in the third request holding unit to the storage device;
An arithmetic processing apparatus comprising:
計数したメモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の待機通知を前記第1の要求保持部に出力し、
前記第1の要求保持部は、
前記アクセス計数部が出力したメモリアクセス要求の待機通知に基づき、対応するバンクへのメモリアクセス要求の前記キャッシュ制御部への投入を抑止する、
ことを特徴とする請求項1記載の演算処理装置。The access counting unit further includes:
Outputting a standby notification of a memory access request for a bank in which the number of counted memory access requests exceeds a predetermined value to the first request holding unit;
The first request holding unit includes:
Based on the standby notification of the memory access request output by the access counter, the memory access request to the corresponding bank is inhibited from being input to the cache controller.
The arithmetic processing apparatus according to claim 1.
前記キャッシュ制御部が、前記第2の要求保持部に前記メモリアクセス要求を保持した場合、前記メモリアクセス要求に対応するバンクの計数値を増分し、
前記主記憶制御部が、前記第3の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行した場合、前記メモリアクセス要求に対応するバンクの計数値を減分する、
ことを特徴とする請求項1記載の演算処理装置。The access counter is
When the cache control unit holds the memory access request in the second request holding unit, it increments the count value of the bank corresponding to the memory access request,
When the main storage control unit issues a memory access request held in the third request holding unit to the main storage device, the count value of the bank corresponding to the memory access request is decremented;
The arithmetic processing apparatus according to claim 1.
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第1の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第2の要求保持部と、
前記第1の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第2の要求保持部に保持するキャッシュ制御部と、
前記第2の要求保持部に保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第1の要求保持部に保持されたメモリアクセス要求の処理を中断させるアクセス計数部と、
前記第2の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する主記憶制御部と、
を有することを特徴とする演算処理装置。In an arithmetic processing unit connected to a main storage device having a plurality of banks,
An instruction processing unit for issuing a memory access request;
A cache memory having a plurality of cache lines for holding data;
A first request holding unit that inputs a memory access request issued by the instruction processing unit;
A second request holding unit for holding a memory access request in which a cache miss has occurred;
A cache control unit that searches the cache memory based on a memory access request input from the first request holding unit and holds a memory access request in which a cache miss has occurred in the second request holding unit;
Based on the memory access requests held in the second request holding unit, the number of memory access requests to the main storage device is counted for each bank, and the number of any memory access requests counted exceeds a predetermined value. An access counting unit that causes the cache control unit to suspend processing of a memory access request held in the first request holding unit;
A main storage control unit that issues a memory access request held in the second request holding unit to the main storage device;
An arithmetic processing apparatus comprising:
計数したメモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の待機通知を前記第1の要求保持部に出力し、
前記第1の要求保持部は、
前記アクセス計数部が出力したメモリアクセス要求の待機通知に基づき、対応するバンクへのメモリアクセス要求の前記キャッシュ制御部への投入を抑止する、
ことを特徴とする請求項4記載の演算処理装置。The access counting unit further includes:
Outputting a standby notification of a memory access request for a bank in which the number of counted memory access requests exceeds a predetermined value to the first request holding unit;
The first request holding unit includes:
Based on the standby notification of the memory access request output by the access counter, the memory access request to the corresponding bank is inhibited from being input to the cache controller.
The arithmetic processing apparatus according to claim 4, wherein:
前記キャッシュ制御部が、前記第2の要求保持部に前記メモリアクセス要求を保持した場合、前記メモリアクセス要求に対応するバンクの計数値をプラス1し、
前記主記憶制御部が、前記第2の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行した場合、前記メモリアクセス要求に対応するバンクの計数値を減分する、
ことを特徴とする請求項4記載の演算処理装置。The access counter is
When the cache control unit holds the memory access request in the second request holding unit, the count value of the bank corresponding to the memory access request is incremented by 1,
When the main storage control unit issues a memory access request held in the second request holding unit to the main storage device, the count value of the bank corresponding to the memory access request is decremented;
The arithmetic processing apparatus according to claim 4, wherein:
前記演算処理装置は、
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第1の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第2の要求保持部と、
前記第1の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第2の要求保持部に保持するキャッシュ制御部と、
前記第2の要求保持部に保持されたメモリアクセス要求のうち、処理が中断されなかったメモリアクセス要求を保持する第3の要求保持部と、
前記第2の要求保持部と前記第3の要求保持部に保持されたメモリアクセス要求に基づき、前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数し、計数したいずれかのバンクのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第1の要求保持部に保持されたメモリアクセス要求の処理を中断させるアクセス計数部と、
前記第3の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する主記憶制御部と、
を有することを特徴とする情報処理装置。In an information processing apparatus having a main storage device having a plurality of banks and an arithmetic processing device connected to the main storage device,
The arithmetic processing unit includes:
An instruction processing unit for issuing a memory access request;
A cache memory having a plurality of cache lines for holding data;
A first request holding unit that inputs a memory access request issued by the instruction processing unit;
A second request holding unit for holding a memory access request in which a cache miss has occurred;
A cache control unit that searches the cache memory based on a memory access request input from the first request holding unit and holds a memory access request in which a cache miss has occurred in the second request holding unit;
Of the memory access requests held in the second request holding unit, a third request holding unit holding a memory access request whose processing has not been interrupted;
Based on the memory access requests held in the second request holding unit and the third request holding unit, the number of memory access requests to the main storage device is counted for each bank, and the memory in any of the counted banks An access counter that interrupts the processing of the memory access request held in the first request holding unit when the number of access requests exceeds a predetermined value;
A main storage control unit that issues a memory access request held in the third request holding unit to the main storage device;
An information processing apparatus comprising:
前記演算処理装置は、
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第1の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第2の要求保持部と、
前記第1の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第2の要求保持部に保持するキャッシュ制御部と、
前記第2の要求保持部に保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第1の要求保持部に保持されたメモリアクセス要求の処理を中断させるアクセス計数部(401)と、
前記第2の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する主記憶制御部と、
を有することを特徴とする情報処理装置。In an information processing apparatus having a main storage device having a plurality of banks and an arithmetic processing device connected to the main storage device,
The arithmetic processing unit includes:
An instruction processing unit for issuing a memory access request;
A cache memory having a plurality of cache lines for holding data;
A first request holding unit that inputs a memory access request issued by the instruction processing unit;
A second request holding unit for holding a memory access request in which a cache miss has occurred;
A cache control unit that searches the cache memory based on a memory access request input from the first request holding unit and holds a memory access request in which a cache miss has occurred in the second request holding unit;
Based on the memory access requests held in the second request holding unit, the number of memory access requests to the main storage device is counted for each bank, and the number of any memory access requests counted exceeds a predetermined value. An access counting unit (401) for causing the cache control unit to interrupt the processing of the memory access request held in the first request holding unit;
A main storage control unit that issues a memory access request held in the second request holding unit to the main storage device;
An information processing apparatus comprising:
前記演算処理装置が有する命令処理部が、メモリアクセス要求を発行し、
前記演算処理装置が有するキャッシュ制御部が、前記命令処理部が発行したメモリアクセス要求を、前記演算処理装置が有する第1の要求保持部に保持し、
前記キャッシュ制御部が、前記第1の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、
前記キャッシュ制御部が、キャッシュミスが発生したメモリアクセス要求を、前記演算処理装置が有する第2の要求保持部に保持し、
前記キャッシュ制御部が、前記第2の要求保持部に保持されたメモリアクセス要求を、前記演算処理装置が有する第3の要求保持部に保持し、
前記演算処理装置が有するアクセス計数部が、前記第2の要求保持部と前記第3の要求保持部に保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第1の要求保持部に保持されたメモリアクセス要求の処理を中断させ、
前記キャッシュ制御部が、前記第3の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する、
ことを特徴とする演算処理装置の制御方法。In a control method of an arithmetic processing unit having a cache memory connected to a main storage device having a plurality of banks and having a plurality of cache lines for holding data,
The instruction processing unit included in the arithmetic processing unit issues a memory access request,
A cache control unit included in the arithmetic processing unit holds a memory access request issued by the instruction processing unit in a first request holding unit included in the arithmetic processing unit;
The cache control unit searches the cache memory based on a memory access request input from the first request holding unit;
The cache control unit holds a memory access request in which a cache miss has occurred in a second request holding unit of the arithmetic processing unit;
The cache control unit holds the memory access request held in the second request holding unit in a third request holding unit included in the arithmetic processing unit;
The access counting unit included in the arithmetic processing unit counts the number of memory access requests to the main storage device for each bank based on the memory access requests held in the second request holding unit and the third request holding unit. And if the number of memory access requests counted exceeds a predetermined value, the cache control unit is suspended from processing the memory access request held in the first request holding unit,
The cache control unit issues a memory access request held in the third request holding unit to the main storage device;
A control method for an arithmetic processing unit.
前記アクセス計数部は、
計数したメモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の待機通知を前記第1の要求保持部に出力し、
前記第1の要求保持部は、前記アクセス計数部が出力したメモリアクセス要求の待機通知に基づき、対応するバンクへのメモリアクセス要求の前記キャッシュ制御部への投入を抑止する、
ことを特徴とする請求項9記載の演算処理装置の制御方法。In the control method of the arithmetic processing unit,
The access counter is
Outputting a standby notification of a memory access request for a bank in which the number of counted memory access requests exceeds a predetermined value to the first request holding unit;
The first request holding unit suppresses the memory access request to the corresponding bank from being input to the cache control unit based on the standby notification of the memory access request output by the access counting unit.
The method of controlling an arithmetic processing unit according to claim 9.
前記アクセス計数部は、
前記キャッシュ制御部が、前記第2の要求保持部に前記メモリアクセス要求を保持した場合に、前記メモリアクセス要求に対応するバンクの計数値を増分し、
前記主記憶制御部が、前記第3の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行した場合に、前記メモリアクセス要求に対応するバンクの計数値を減分する、
ことを特徴とする請求項9記載の演算処理装置の制御方法。In the control method of the arithmetic processing unit,
The access counter is
When the cache control unit holds the memory access request in the second request holding unit, it increments the count value of the bank corresponding to the memory access request,
When the main storage control unit issues a memory access request held in the third request holding unit to the main storage device, the count value of the bank corresponding to the memory access request is decremented;
The method of controlling an arithmetic processing unit according to claim 9.
前記演算処理装置が有する命令処理部が、メモリアクセス要求を発行し、
前記演算処理装置が有するキャッシュ制御部が、前記命令処理部が発行したメモリアクセス要求を前記演算処理装置が有する第1の要求保持部に保持し、
前記キャッシュ制御部が、前記第1の要求保持部から投入されたメモリアクセス要求に基づき、前記キャッシュメモリを検索し、
前記キャッシュ制御部が、キャッシュミスが発生したメモリアクセス要求を、前記演算処理装置が有する第2の要求保持部に保持し、
前記演算処理装置が有するアクセス計数部が、前記第2の要求保持部と保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第1の要求保持部に保持されたメモリアクセス要求の処理を中断させ、
前記キャッシュ制御部が、前記アクセス中断指示に基づき、前記第1の要求保持部に保持されたメモリアクセス要求の処理を中断し、
前記キャッシュ制御部が、前記第2の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する、
ことを特徴とする情報処理装置の制御方法。In a control method of an information processing apparatus having a main storage device having a plurality of banks and an arithmetic processing device connected to the main storage device,
The instruction processing unit included in the arithmetic processing unit issues a memory access request,
A cache control unit included in the arithmetic processing unit holds a memory access request issued by the instruction processing unit in a first request holding unit included in the arithmetic processing unit;
The cache control unit searches the cache memory based on a memory access request input from the first request holding unit;
The cache control unit holds a memory access request in which a cache miss has occurred in a second request holding unit of the arithmetic processing unit;
The access counting unit included in the arithmetic processing unit counts the number of memory access requests to the main storage device for each bank based on the memory access request held with the second request holding unit, and When the number of memory access requests exceeds a predetermined value, the cache control unit is interrupted to process the memory access requests held in the first request holding unit,
The cache control unit interrupts processing of the memory access request held in the first request holding unit based on the access interruption instruction;
The cache control unit issues a memory access request held in the second request holding unit to the main storage device;
A method for controlling an information processing apparatus.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013520387A JPWO2012172683A1 (en) | 2011-06-17 | 2011-06-17 | Arithmetic processing device, information processing device, and control method of arithmetic processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013520387A JPWO2012172683A1 (en) | 2011-06-17 | 2011-06-17 | Arithmetic processing device, information processing device, and control method of arithmetic processing device |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2012172683A1 true JPWO2012172683A1 (en) | 2015-02-23 |
Family
ID=52687719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013520387A Ceased JPWO2012172683A1 (en) | 2011-06-17 | 2011-06-17 | Arithmetic processing device, information processing device, and control method of arithmetic processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPWO2012172683A1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02259944A (en) * | 1988-12-23 | 1990-10-22 | Internatl Business Mach Corp <Ibm> | Memory load dispersion |
US20030051108A1 (en) * | 1999-06-02 | 2003-03-13 | Chen Jason Chung-Shih | Method and apparatus for load distribution across memory banks with constrained access |
US20060026342A1 (en) * | 2004-07-27 | 2006-02-02 | International Business Machines Corporation | DRAM access command queuing structure |
JP2009205573A (en) * | 2008-02-29 | 2009-09-10 | Nec Computertechno Ltd | Buffer controller and buffer control method |
-
2011
- 2011-06-17 JP JP2013520387A patent/JPWO2012172683A1/en not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02259944A (en) * | 1988-12-23 | 1990-10-22 | Internatl Business Mach Corp <Ibm> | Memory load dispersion |
US20030051108A1 (en) * | 1999-06-02 | 2003-03-13 | Chen Jason Chung-Shih | Method and apparatus for load distribution across memory banks with constrained access |
US20060026342A1 (en) * | 2004-07-27 | 2006-02-02 | International Business Machines Corporation | DRAM access command queuing structure |
JP2009205573A (en) * | 2008-02-29 | 2009-09-10 | Nec Computertechno Ltd | Buffer controller and buffer control method |
Non-Patent Citations (2)
Title |
---|
JPN6011049561; 近藤正章 外2名: 'トラクションコントロール実行: CMP向け実行制御方式の検討' 情報処理学会研究報告 Vol. 2007, No. 79 (2007-ARC-174), 20070803, p. 79-84, 社団法人情報処理学会 * |
JPN6011049562; Kyle J. Nesbit 外3名: 'Fair Queuing Memory Systems' Proceedings of the 39th Annual IEEE/ACM International Symposium on Microarchitecture IEEE Computer Society, 20061213, p. 208-222, IEEE Computer so * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10248570B2 (en) | Methods, systems and apparatus for predicting the way of a set associative cache | |
US8667225B2 (en) | Store aware prefetching for a datastream | |
US6230260B1 (en) | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching | |
US6496902B1 (en) | Vector and scalar data cache for a vector multiprocessor | |
US8082420B2 (en) | Method and apparatus for executing instructions | |
US20060143390A1 (en) | Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache | |
US20120260056A1 (en) | Processor | |
US20070143581A1 (en) | Superscalar data processing apparatus and method | |
US9213640B2 (en) | Promoting transactions hitting critical beat of cache line load requests | |
US6963962B2 (en) | Memory system for supporting multiple parallel accesses at very high frequencies | |
US8639889B2 (en) | Address-based hazard resolution for managing read/write operations in a memory cache | |
US6321328B1 (en) | Processor having data buffer for speculative loads | |
US8190825B2 (en) | Arithmetic processing apparatus and method of controlling the same | |
EP2905707B1 (en) | Arithmetic processing apparatus and control method therefor | |
US6237064B1 (en) | Cache memory with reduced latency | |
WO2005088454A2 (en) | Processing pipeline with progressive cache | |
JP2007207248A (en) | Method for command list ordering after multiple cache misses | |
US20040186960A1 (en) | Computer processor data prefetch unit | |
JP2011013864A (en) | Instruction controller, instruction control method and arithmetic circuit | |
WO2012172683A1 (en) | Arithmetic processing unit, information processing device, and arithmetic processing unit control method | |
US7461211B2 (en) | System, apparatus and method for generating nonsequential predictions to access a memory | |
JP5630568B2 (en) | Arithmetic processing apparatus, information processing apparatus, and control method for arithmetic processing apparatus | |
JPH06202951A (en) | Cash memory system | |
JPWO2012172683A1 (en) | Arithmetic processing device, information processing device, and control method of arithmetic processing device | |
US20050015552A1 (en) | System for supporting unlimited consecutive data stores into a cache memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20141118 |
|
A045 | Written measure of dismissal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20150324 |