JP2015219813A - 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP2015219813A
JP2015219813A JP2014104294A JP2014104294A JP2015219813A JP 2015219813 A JP2015219813 A JP 2015219813A JP 2014104294 A JP2014104294 A JP 2014104294A JP 2014104294 A JP2014104294 A JP 2014104294A JP 2015219813 A JP2015219813 A JP 2015219813A
Authority
JP
Japan
Prior art keywords
request
data
unit
storage device
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014104294A
Other languages
English (en)
Other versions
JP6287571B2 (ja
Inventor
雄太 豊田
Yuta Toyoda
雄太 豊田
広治 細江
Koji Hosoe
広治 細江
正寿 相原
Masatoshi Aihara
正寿 相原
明夫 常世田
Akio Tokiyoda
明夫 常世田
須賀 誠
Makoto Suga
誠 須賀
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 JP2014104294A priority Critical patent/JP6287571B2/ja
Priority to US14/708,331 priority patent/US9766820B2/en
Priority to EP15167675.6A priority patent/EP2947572A1/en
Publication of JP2015219813A publication Critical patent/JP2015219813A/ja
Application granted granted Critical
Publication of JP6287571B2 publication Critical patent/JP6287571B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0879Burst mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/301In special purpose processing node, e.g. vector processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB

Abstract

【課題】プロセッサコアのデータ読み出しにかかるレイテンシを小さくする演算処理装置、情報処理装置、及び、演算処理装置の制御方法を提供する。【解決手段】主記憶装置に接続する演算処理装置において、データを記憶するキャッシュメモリ部と、前記キャッシュメモリ部に記憶されたデータに対して演算を行う演算部と、前記キャッシュメモリ部を制御するとともに、前記主記憶装置が記憶するデータを読み出す第1の要求を出力する第1の制御部と、前記主記憶装置に接続されるとともに、前記第1の制御部が出力する第1の要求を分割した複数の第2の要求を前記主記憶装置にそれぞれ送信するとともに、送信した前記複数の第2の要求に対応するデータを前記主記憶装置からそれぞれ受信して前記第1の制御部に送信する第2の制御部を有する。【選択図】図2

Description

本発明は、演算処理装置、情報処理装置、及び、演算処理装置の制御方法に関する。
HPC(high performance computing)向けスーパーコンピュータ、サーバ、PC(personal computer)、携帯電話等の情報処理装置内部に設けられるプロセッサの計算速度は、製造プロセスの微細化に伴って向上している。プロセッサの計算速度の向上に伴い、主記憶装置(メインメモリ)の容量やプロセッサと主記憶装置間の帯域幅の向上が要求される。
従来、DIMM(Dual Inline Memory Module)がDRAM(Dynamic Random Access Memory:DRAM)(メインメモリ)として採用されてきた。一方、近年、DRAM(Dynamic Random Access Memory)コントローラを内蔵するメモリ素子が提供されている。例えば、HMC(Hybrid Memory Cube)である。DRAMコントローラをメモリ素子側に備えることにより、主記憶装置(メインメモリ)の容量や帯域の向上が実現される。DRAMについては、例えば、特許文献1に記載される。
特開2001−222472号公報
しかしながら、プロセッサとメモリコントローラとの分離により、プロセッサコアがデータの読み出すまでのレイテンシが大きくなることがある。
1つの側面は、本発明は、プロセッサコアのデータ読み出しにかかるレイテンシを小さくする演算処理装置、情報処理装置、及び、演算処理装置の制御方法を提供する。
第1の側面は、主記憶装置に接続する演算処理装置において、データを記憶するキャッシュメモリ部と、前記キャッシュメモリ部に記憶されたデータに対して演算を行う演算部と、前記キャッシュメモリ部を制御するとともに、前記主記憶装置が記憶するデータを読み出す第1の要求を出力する第1の制御部と、前記主記憶装置に接続されるとともに、前記第1の制御部が出力する第1の要求を分割した複数の第2の要求を前記主記憶装置にそれぞれ送信するとともに、送信した前記複数の第2の要求に対応するデータを前記主記憶装置からそれぞれ受信して前記第1の制御部に送信する第2の制御部を有する。
第1の側面によれば、プロセッサコアのデータ読み出しにかかるレイテンシを小さくすることができる。
本実施の形態例における情報処理装置のハードウェア構成を示す図である。 図1に示すメモリコントローラのハードウェアブロック図である。 図2に示すメモリコントローラのリクエスト分割部及びリクエスト保持部の詳細を説明する図である。 キャッシュコントローラからメモリコントローラに送信されるリードリクエストのフォーマットを説明する図である。 図4で説明したリードリクエストの送信例を示す図である。 メモリコントローラがメインメモリに送信するリードリクエストを含むパケットのフォーマットを説明する図である。 分割していないリードリクエストを含むパケットの一例を示す図である。 分割して生成したリードリクエストをそれぞれ含むパケットの一例を示す図である。 図2に示すメモリコントローラの応答データ受信部及びリクエスト管理部の詳細を説明する図である。 メモリコントローラがDRAMコントローラユニットから受信する応答パケットのフォーマットを説明する図である。 図8に示す分割して生成したリードリクエストに対応する応答パケットの一例を示す図である。 メモリコントローラがキャッシュコントローラに送信するリクエスト応答のフォーマットを説明する図である。 図12で説明したリクエスト応答の送信例を示す図である。 メモリコントローラがキャッシュコントローラに出力するリクエスト応答を説明するタイミングチャートである。
以下、図面にしたがって本発明の実施の形態を説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
[情報処理装置]
図1は、本実施の形態例における情報処理装置のハードウェア構成を示す図である。図1の情報処理装置は、プロセッサ(演算処理装置)100とメインメモリ(主記憶装置)200とを有する。プロセッサ100は、メインメモリ200と、シリアルバス300を介して接続し、高速シリアル通信を行う。シリアルバス300は、例えば、16レーンのシリアル転送バスで構成される。
図1のプロセッサ100は、プロセッサコア(演算部)10、キャッシュメモリ21、キャッシュコントローラ(第1の制御部)20、メモリコントローラ(第2の制御部)30、インタフェース部40を有する。インタフェース部40は、図示していないが、クロスバースイッチを介して、他の情報処理装置と接続する。他の情報処理装置も、図1の情報処理装置と同様の構成を有する。
図1のプロセッサコア10は、フェッチした命令をデコードし、命令内容に応じて各種の制御や演算処理を行う。プロセッサコア10は、デコードした命令がロード命令である場合、データを読み出すリードリクエストを発行し、ストア命令である場合はデータを書き込むライトリクエストを発行する。図1のプロセッサコア10は、1つのコアを示すが、複数のコアであってもよい。
図1のキャッシュコントローラ20は、キャッシュメモリ21を制御する。図1のキャッシュメモリ21は、例えば、1次キャッシュである。ただし、この例に限定されるものではなく、キャッシュメモリ21は、例えば、1次キャッシュ及び2次キャッシュ、1次キャッシュ及び2次キャッシュ及び3次キャッシュ等であってもよい。キャッシュメモリ21は、プロセッサコア10によるアクセス頻度が高いデータを一時的に記憶する。キャッシュメモリ21は、メインメモリ200から読み出したデータを、システムで定義されるブロック(以下、キャッシュラインと称する)単位に記憶する。キャッシュラインのサイズは、プロセッサ100が採用するアーキテクチャに基づいて定義される。本実施の形態例では、キャッシュラインのサイズは、例えば、128バイトである。
キャッシュコントローラ20は、プロセッサコア10が発行したリードリクエスト、ライトリクエストを受信する。キャッシュコントローラ20は、プロセッサコア10からのリードリクエスト及びライトリクエストに応答して、対象とするデータのキャッシュメモリ21のキャッシュヒット・ミス判定を行う。
キャッシュコントローラ20は、プロセッサコア10からのリードリクエストが対象とするデータがキャッシュメモリ21に記憶されている(キャッシュヒットという)場合、キャッシュメモリ21から対象のデータを読み出す。一方、対象とするデータがキャッシュメモリ21に記憶されていない(キャッシュミスヒットという)場合、キャッシュコントローラ20は、メインメモリ200からデータを読み出すリードリクエストを、メモリコントローラ30に送信する。また、キャッシュコントローラ20は、ライトリクエストが対象とするデータがキャッシュヒットした場合、キャッシュメモリ21の対象データを書き換える。一方、ライトリクエストが対象とするデータがキャッシュミスヒットした場合、キャッシュコントローラ20は、対象とするデータをキャッシュメモリ21に新たに書き込む。
また、キャッシュコントローラ20は、インタフェース部40を介して、他の情報処理装置等が発行するリードリクエスト等のダイレクトメモリアクセス(Direct Memory Access:DMA)要求を受信する。また、キャッシュコントローラ20は、プリフェッチ命令を発行し、先の演算処理で使用する可能性があるデータを、予めキャッシュメモリ21に読み出す。キャッシュコントローラ20は、DMA要求、プリフェッチが対象とするデータをメインメモリ200から読み出すリードリクエストを、メモリコントローラ30に送信する。
また、キャッシュコントローラ20は、メモリコントローラ30から、送信したリードリクエストに応答してメインメモリ200から読み出されたリードデータを受信する。そして、キャッシュコントローラ20は、リードデータがプロセッサコア10によるリードリクエスト、または、プリフェッチに該当する場合、リードデータをキャッシュメモリ21に記憶する。また、キャッシュコントローラ20は、リードデータがDMA要求に該当する場合、リードデータをインタフェース部40に出力する。
図1のメモリコントローラ30は、キャッシュコントローラ20から送信されるリードリクエスト、ライトリクエストに基づいて、所定のプロトコルにしたがってパケットを生成する。そして、メモリコントローラ30は、生成したパケットを、シリアルバス300を介してメインメモリ200に送信する。パケットは、データ長に応じて、データバス幅毎に複数サイクル分、バースト転送される。
また、メモリコントローラ30は、メインメモリ200からリードリクエストに基づくリードデータを含む応答パケットを、順次、受信する。そして、メモリコントローラ30は、リードデータに、リードデータが対応するリードリクエストの情報を関連付けて、キャッシュコントローラ20に送信する。
図1のメインメモリ200は、例えば、HMC(Hybrid Memory Cube)である。即ち、メインメモリ200は、複数の記憶素子によって構成されるDRAM(Dynamic Random Access Memory:DRAM)60と、DRAM(Dynamic Random Access Memory)コントローラユニット(第3のコントローラ)50とを有する。DRAMコントローラユニット50は、DRAM60側のチップに搭載される。そして、メインメモリ200は、プロセッサ100とシリアルバス300を介して接続することにより、広帯域を実現する。
DRAM60は、複数枚の半導体層(シリコンダイ)x1〜x4を有する。複数枚の半導体層x1〜x4は、TSV(Through-Silicon Via:シリコン貫通電極)によって接続し、積層した縦の列が1つのDRAMとして機能する。これにより、DRAM素子を高さ方向に積み上げることを実現可能にし、実装密度を向上することで大容量化を達成する。そして、それぞれのDRAM素子は、共通のロジックベースに接続する。ロジックベースの裏面から基板に接続し、複数本のレーンと呼ばれる信号経路(ポート)が引き出され、1つのシリアルリンクとなる。
DRAMコントローラユニット50は、DRAM60のメモリ空間を管理する。また、DRAMコントローラユニット50は、リクエストのタイミング調停やパイプラインの制御を行うことにより、効率的な順番にしたがってリクエストを実行する。また、DRAMコントローラユニット50がDRAM60側のチップに搭載されることにより、リクエストが対象とするデータのデータ長が固定長ではなく、一定の範囲で選択できる自由度を有する。DRAMコントローラユニット50は、可変長のデータにアクセスするリクエストに基づいて、固定長のデータ単位にDRAM60にアクセスすることで、可変長のデータの読み出し及び書き込み処理を実現する。
DRAMコントローラユニット50は、リードリクエストに対応するリードデータを読み出すと、所定のプロトコルにしたがってリードデータを含む応答パケットを生成する。そして、DRAMコントローラユニット50は、シリアルバス300を介して、応答パケットをプロセッサ100に送信する。応答パケットは、パケット長に応じて、データバス幅毎に複数サイクル分、バースト転送される。
このように、図1に示すメインメモリ200は、大容量のDRAM60を搭載し、DRAMコントローラユニット50を備えることによって、容量の向上を実現する。また、メインメモリ200は、プロセッサ100との間をシリアルバス300で接続することによって、帯域の向上を実現する。一方、プロセッサ100とDRAMコントローラユニット50とのチップの分離に伴って、シリアルパラレル変換やチップ間のパケット通信が発生する。これにより、データの書き込み処理、及び、データの読み出し処理にかかるレイテンシが大きくなることがある。
本実施の形態例では、プロセッサ100のメモリコントローラ30は、キャッシュコントローラ20から送信されるリードリクエストを分割して、複数のリードリクエストを生成する。そして、DRAMコントローラユニット50は、メモリコントローラ30から、順次、分割した複数のリードリクエストを受信する。DRAMコントローラユニット50は、リードリクエストに基づいて読み出したリードデータを、メモリコントローラ30に、順次、送信する。
次に、本実施の形態例におけるメモリコントローラ30の構成を説明する。本実施の形態例では、リードリクエストに係る処理を中心に説明する。
[メモリコントローラの詳細]
図2は、図1に示すメモリコントローラ30のハードウェアブロック図である。図2に示すメモリコントローラ30は、リクエスト分割部31、リクエスト保持部32、リクエスト発行部33、応答データ受信部34、リクエスト管理部35を有する。
リクエスト分割部31は、リードリクエストの種別に応じて、リードリクエストを複数のリードリクエストに分割する。具体的に、リクエスト分割部31は、リードリクエストがキャッシュミスヒットに基づくリクエストである場合に、リードリクエストを分割して複数のリードリクエストを生成する。一方、リードリクエストがプリフェッチまたはDMA要求のいずれかに基づくリクエストである場合は、リクエスト分割部31はリードリクエストを分割しない。
リクエスト分割部31は、分割して生成した複数のリードリクエスト、及び、分割しないリードリクエストを、リクエスト保持部32に出力する。リクエスト保持部32は、受信したリードリクエストを保持し、順次、リクエスト発行部33に出力する。
また、リクエスト分割部31は、分割して生成した複数のリードリクエスト、及び、分割しないリードリクエストの情報を、リクエスト管理部35に出力する。リクエスト管理部35は、リクエストタグ(図3)に基づいて、リードリクエストと、リードリクエストに基づいてメインメモリ200から読み出されたリードデータとの対応関係を管理する。また、リクエスト管理部35は、リクエストタグに基づいて、分割して生成した複数のリードリクエストと、分割元のリードリクエストとの対応関係を管理する。
リクエスト発行部33は、リードリクエストそれぞれについて、所定のプロトコルにしたがってパケットを生成する。また、リクエスト発行部33は、データの一部が変化したことを検出するチェックサムとして、パケットに巡回冗長検査(Cyclic Redundancy Check:CRC)コードを付与する。CRCコードは、任意長のデータストリームを入力とし、誤り検出関数に基づいて算出される固定サイズ(例えば、32ビット整数)のコードである。
DRAMコントローラユニット50は、リクエスト発行部33からパケットを受信すると、パケットが含むデータに基づいてCRCコードを算出する。そして、DRAMコントローラユニット50は、算出したCRCコードと、パケットが有するCRCコードとを比較する。CRCコードが一致する場合、DRAMコントローラユニット50は、転送によりパケットが含むデータが変化していない旨、判定する。したがって、CRCコードが一致しない場合、DRAMコントローラユニット50は、リクエスト発行部33にパケットの再送を要求する。
CRCコードが一致する場合、DRAMコントローラユニット50は、リードリクエストに基づいて、DRAM60からリードデータを読み出す。そして、DRAMコントローラユニット50は、リードデータを入力として算出したCRCコードを算出する。DRAMコントローラユニット50は、リードデータと、算出したCRCコードとを有する応答パケットを生成し、メモリコントローラ30に送信する。
応答データ受信部34は、DRAMコントローラユニット50から、応答パケットを、順次、受信する。応答データ受信部34は、応答パケットを、パケット長分、受信し終えるまで保持する。そして、応答データ受信部34は、パケットに含まれるリードデータを入力としてCRCコードを算出し、算出したCRCコードが、パケットが有するCRCコードと一致するか否かを判定する。CRCコードが一致しない場合、応答データ受信部34は、DRAMコントローラユニット50に応答パケットの再送を要求する。CRCコードが一致する場合、応答データ受信部34は、転送によってリードデータが変化していない旨、判定し、リードデータをキャッシュコントローラ21に送信する。
このように、本実施の形態例におけるメモリコントローラ30は、リードリクエストを複数のリードリクエストに分割する。リードリクエストを分割することによって、分割後のリードリクエストそれぞれに基づいて読み出される各データのデータ長は短くなる。読み出し対象の各データのデータ長が短くなることにより、各データのメインメモリ200からの読み出し時間は短縮される。また、各データのデータ長が短くなることにより、応答データ受信部34が、データの受信を開始してからCRCコードの検証を行うまで時間も短くなり、分割して生成された各リードリクエストの応答時間は短縮される。したがって、リードリクエストを分割することによって、分割後のリードリクエストそれぞれのトータルのレイテンシを小さくすることができる。
そして、プロセッサコア10が演算対象とするデータは、分割元のリクエストが読み出し対象とするキャッシュラインサイズのデータ全てではなく、キャッシュラインサイズのデータの一部であるケースが多い。したがって、プロセッサコア10は、分割して生成されたリードリクエストに基づいて読み出されたリードデータが演算対象のデータを含む場合、当該リードデータの受信に応答して演算処理を開始できる。即ち、プロセッサコア10は、分割元のリードリクエストが対象とするキャッシュラインサイズのリードデータ全ての受信を待つ必要がない。したがって、プロセッサコア10は、分割して生成されたリードリクエストのリードデータをより早く受信できるため、より早い段階で演算を開始できる。
これにより、本実施の形態例におけるプロセッサ100は、プロセッサコア10のデータ読み出しにかかるレイテンシを小さくすることができる。したがって、プロセッサコア10は、より効率的に演算処理を行うことができる。
また、メインメモリ200において、DRAMコントローラユニット50は、固定長データサイズのアクセス単位毎にDRAM60をアクセスする。つまり、DRAMコントローラユニット50は、分割されていないリードリクエストについても、リードリクエストの対象とするデータのデータ長を分割したアクセス単位に、DRAM60にアクセスする。したがって、リードリクエストを分割する場合の、メモリコントローラ30によるリードリクエストの分割処理に要する時間は、問題にはならない。
また、リードリクエストを分割することによって、メインメモリ200からメモリコントローラ30に送信されるリードデータのデータ長は短くなる。データ長が短くなることにより、データ転送におけるエラー発生率は低下する。これにより、メモリコントローラ30は、CRCエラーの発生に基づいて発生する、応答パケットの再送に伴う性能の低下を抑制することができる。
[メモリコントローラの送信側]
次に、図2に示すメモリコントローラ30における、リードリクエスト送信側の各部(リクエスト分割部31、リクエスト保持部32)の処理を詳細に説明する。
図3は、図2に示すメモリコントローラ30のリクエスト分割部31及びリクエスト保持部32の詳細を説明する図である。図3に示すように、リクエスト分割部31は、判定部310、リクエスト生成部311、タグ付与部315を有する。また、リクエスト生成部311は、タグ生成部312、コード生成部313、アドレス生成部314を有する。
判定部310は、リードリクエストの要因を示すリクエストID(Identification:ID)64(図4、図5)に基づいて、リードリクエストを分割するか否かを判定する。例えば、キャッシュコントローラ20は、リードリクエストの発行時に、リクエストID64を付与する。リクエストID64は、キャッシュミスヒット、プリフェッチ、DMA要求等のリードリクエストの要因を識別する情報である。判定部310は、リクエストIDに基づいて、リードリクエストがキャッシュミスヒットに基づくリクエストである場合に、リクエストを分割する。また、判定部310は、リクエストIDに基づいて、リードリクエストがプリフェッチまたはDMA要求のいずれかに基づくリクエストである場合は、リクエストを分割しない。
具体的に、DMA要求に基づくリードリクエストの場合、インタフェース部40(図1)は、読み出し対象のデータを一度に、他の情報処理装置へ送信する。したがって、データを分割して、個々の各リードリクエストのレイテンシを小さくする利点は小さい。このため、判定部310は、DMA要求に基づくリードリクエストを分割の対象としない。また、プリフェッチは、先の演算処理で使用する可能性があるデータを広範囲に読み出す処理であるため、データを分割して個々のリードリクエストのレイテンシを小さくする利点は小さい。このため、判定部310は、プリフェッチに基づくリードリクエストを分割の対象としない。
また、メモリコントローラ10には、リードリクエストの分割数m(m>1、整数)が、予め設定される。分割数mは、例えば、プロセッサコア10の処理単位のサイズと、キャッシュメモリ21のキャッシュラインサイズとに基づいて設定される。前述したとおり、キャッシュコントローラ20は、キャッシュライン単位に、データの読み出し処理、データの書き込み処理を行う。したがって、リードリクエストが対象とするデータ長はキャッシュラインのサイズを示す。
例えば、分割数mがより大きい場合、分割後の各リードリクエストが対象とするデータ長は短くなり、読み出したリードデータが、プロセッサコア10が演算対象とする単位のデータを含む確率が低くなる。一方、分割数mがより小さい場合、分割後の各リードリクエストが対象とするデータ長が大きくなることにより、読み出したリードデータが、プロセッサコア10が演算対象とする単位のデータを含む確率は高くなる。その一方で、分割数mがより小さい場合、リードリクエストが対象とするデータのデータ長が大きくなるため、分割して生成された各リードリクエストのレイテンシは小さくなり難い。
前述したとおり、本実施の形態例におけるキャッシュラインのサイズは、128バイトである。また、例えば、プロセッサコア10の処理単位のサイズは32ビットである。したがって、キャッシュラインサイズ「128バイト」と、プロセッサコア10の処理単位サイズ「32ビット」とに基づいて、分割して生成された各リードリクエストのレイテンシを小さくするとともに、読み出したリードデータが、プロセッサコア10が演算対象とする単位のデータを含む確率を高める分割数が設定される。本実施の形態例におけるリードリクエストの分割数mは、例えば、「4」に設定される。
ここで、キャッシュコントローラ20がメモリコントローラ30に送信するリードリクエストの構成、及び、リードリクエストの一例を説明する。
図4、図5は、キャッシュコントローラ20がメモリコントローラ30に送信するリードリクエストを説明する図である。図4は、キャッシュコントローラ20がメモリコントローラ30に送信するリードリクエストのフォーマットを示す図である。また、図5は、キャッシュコントローラ20がメモリコントローラ30に送信するリードリクエストの送信例を示す図である。
図4に示すように、リードリクエストは、データ有効フラグ61、オペレーションコード62、アドレス63、リクエストID64のフォーマットからなる。データ有効フラグ61は、メモリコントローラ30がリクエストを取り込むか否かを示すフラグである。メモリコントローラ30は、データ有効フラグ61が値「1」である場合に、リクエストを取り込む。オペレーションコード62は、命令コードである。アドレス63は、読み出し対象のデータが記憶されたDRAM60のアドレスである。リクエストID64は、図3で説明したとおりである。
また、図5は、図4で説明したリードリクエストの送信例を示す。キャッシュコントローラ20は、図4に示すデータ有効フラグ61、オペレーションコード62、アドレス63、リクエストID64を1サイクルで、メモリコントローラ30に送信する。
ここで、キャッシュコントローラ20が、128バイトのデータのロード命令に対応するキャッシュミスヒットに基づいて、メモリコントローラ30にリードリクエストを発行する場合を例示する。この場合、データ有効フラグ61は値「1」を有し、オペレーションコード62は、128バイトのデータのリードを示す。また、アドレス63は、128バイトのデータが記憶されたDRAM60の先頭アドレスを示す。リクエストID64は、キャッシュミスヒットに基づくリードリクエストであることを示す。
図3に戻り、リクエスト分割部31のタグ生成部312は、分割して生成する各リードリクエストのリクエストタグ(識別情報)を生成する。リクエストタグは、リードリクエストを識別する情報である。また、リクエストタグは、リードリクエストに基づいてメインメモリ200から読み出されたリードデータと、リードリクエストとを関連付ける。さらに、リクエストタグは、分割して生成した各リードリクエストを、分割元のリードリクエストに関連付ける。
本実施の形態例におけるメモリコントローラ30は、リクエストタグを付加したリードリクエストを、メインメモリ200に送信する。そして、メモリコントローラ30は、メインメモリ200から、リクエストタグを付加したリードデータを受信する。そして、メモリコントローラ30は、リクエストタグに基づいて、リードデータに対応するリードリクエストを特定する。また、メモリコントローラ30は、リードデータが分割されたリードリクエストに対応する場合、リクエストタグに基づいて、分割元のリードリクエストを特定する。
また、リクエスト分割部31のコード生成部313は、分割元のリードリクエストのオペレーションコード62(図4、図5)に基づいて、分割して生成する各リードリクエストのオペレーションコード62を生成する。処理の詳細は後述する。また、リクエスト分割部31のアドレス生成部314は、分割元のリードリクエストのアドレス63(図4、図5)に基づいて、分割して生成する各リードリクエストのアドレス63を生成する。処理の詳細は後述する。そして、リクエスト分割部31は、生成したリクエストタグ、オペレーションコード62、アドレス63に基づいて、それぞれのリードリクエストを生成する。
一方、リクエストを分割しない場合、リクエスト分割部31のタグ付与部315は、リクエストタグを生成し、リードリクエストに付与する。前述したとおり、メモリコントローラ30は、リードデータを受信したときに、リクエストタグに基づいて、リードデータに対応するリードリクエストを特定する。
リクエスト分割部31は、分割して生成した各リードリクエスト、及び、分割していないリードリクエストをリクエスト保持部32に出力する。リクエスト保持部32は、リクエストキューを有する。リクエストキューは、リクエストタグ、オペレーションコード62、アドレス63それぞれについて、フリップフロップの配列312、322、323を有する。リクエストキューは、順次、リクエストを保持し、リクエスト発行部33に出力する。
また、リクエスト分割部31は、分割して生成した各リードリクエストのリクエストタグ、オペレーションコード62、アドレス63、リクエストID64を、リクエスト管理部35に出力する。これにより、リクエスト管理部35は、リクエストタグと、オペレーションコード62、アドレス63、リクエストID64との対応関係を管理する。また、リクエスト分割部31は、分割して生成した各リードリクエストのリクエストタグ、オペレーションコード62、アドレス63に加えて、分割元のリードリクエストのオペレーションコード62、アドレス63、リクエストID64を、リクエスト管理部35に出力する。これにより、リクエスト管理部35は、さらに、分割して生成されたリードリクエストのリクエストタグと、分割元のリードリクエストのオペレーションコード62、アドレス63、リクエストID64との対応関係を管理する。
ここで、メモリコントローラ30のリクエスト発行部33が、メインメモリ200に送信するリードリクエストを含むパケットの具体例を説明する。
図6は、メモリコントローラ30がメインメモリ200に送信するリードリクエストを含むパケットのフォーマットを示す図である。図6に示すように、パケットは、Headerレコード71と、Tailレコード72のフォーマットからなる。Headerレコード71は、リクエストタグ711、オペレーションコード712、アドレス713を有する。Tailレコード72は、CRCコード721を有する。
リクエストタグ711は、図3で説明したとおりである。リクエストタグ711が付与されることによって、リードリクエストによって読み出されたリードデータと、リードリクエストの内容との関連付けが可能になる。また、リクエストタグ711が付与されることによって、リードデータが分割して生成されたリードリクエストに対応する場合、リードデータと、分割元のリードリクエストの内容との関連付けが可能になる。
また、分割されないリードリクエストの場合、オペレーションコード712、及び、アドレス713は、図4、図5で示したオペレーションコード62を示す。一方、分割して生成されたリードリクエストの場合、オペレーションコード712、及び、アドレス713は、リクエスト分割部31が生成したオペレーションコード、及び、アドレスを示す。CRCコード721は、例えば、リクエストタグ711、オペレーションコード712、アドレス713等を入力として算出したCRC値である。
パケットのフォーマット(図6)に続いて、分割していないリードリクエストを含むパケット(図7)、及び、分割して生成したリードリクエストを含む複数のパケット(図8)の一例を説明する。
図7は、分割していないリードリクエストを含むパケットpk0の一例を示す図である。即ち、図7のパケットpk0が有するリードリクエストは、DMA要求またはプリフェッチに基づくリードリクエストである。
図7に示すパケットpk0は、リクエストタグ「001」711、オペレーションコード「128バイトのデータのリード」712、アドレス「1001_1111_1100_0011_1111_1010_1000_0000」713、CRCコード「xxxxxxxx」714を有する。つまり、パケットpk0が示すリードリクエストは、DRAM60のアドレス「1001_1111_1100_0011_1111_1010_1000_0000」713からアドレス「1001_1111_1100_0011_1111_1010_1110_0000」までの128バイトのデータを読み出すリクエストである。タグ付与部315(図3)は、リードリクエストに、リクエストタグ「001」711を付与している。CRCコード「xxxxxxxx」714は、リクエストタグ711、オペレーションコード712、アドレス713等を入力として算出したCRC値である。
図8は、分割して生成したリードリクエストをそれぞれ含むパケットpk1〜pk4の一例を示す図である。即ち、図8に示すリードリクエストは、キャッシュミスヒットに基づくリードリクエストを分割して生成したリードリクエストである。
図8に示すパケットpk1〜pk4は、分割元のリードリクエストが4個に分割された各リードリクエストを含むパケットである。図8の例において、分割元のリードリクエストは、DRAM60のアドレス「1001_1111_1100_0011_1111_1010_1000_0000」からアドレス「1001_1111_1100_0011_1111_1010_1110_0000」までの128バイトのデータを読み出すリクエストである。
タグ生成部312(図3)は、4つのリクエストタグ711を生成する。また、コード生成部313(図3)は、128バイトのデータのリードを示すオペレーションコード62に基づいて、32バイトのデータのリードを示す、各リードリクエストのオペレーションコード712を生成する。また、アドレス生成部314(図3)は、アドレス「1001_1111_1100_0011_1111_1010_1000_0000」から128バイトのアドレス範囲を、4分割する。そして、アドレス生成部314は、4分割した各アドレス範囲の先頭アドレスを、各リードリクエストのアドレス713として生成する。そして、リクエスト分割部31は、生成したリクエストタグ711、オペレーションコード712、アドレス713に基づいて、4つのリードクエストを生成する。
図8に示す1つ目のパケットpk1は、リクエストタグ「001」711a、オペレーションコード「リード/32バイト」712a、アドレス「1001_1111_1100_0011_1111_1010_1000_0000」713a、CRCコード「aaaaaaaa」714aを有する。CRCコード714aは、リクエストタグ711a、オペレーションコード712a、アドレス713a等を入力として算出したCRC値である。
また、2つ目のパケットpk2は、リクエストタグ「010」711b、オペレーションコード「リード/32バイト」712b、アドレス「1001_1111_1100_0011_1111_1010_1010_0000」713b、CRCコード「bbbbbbbb」714bを有する。CRCコード714bは、リクエストタグ711b、オペレーションコード712b、アドレス713b等を入力として算出したCRC値である。
同様にして、3つ目のパケットpk3は、リクエストタグ「011」711c、オペレーションコード「リード/32バイト」712c、アドレス「1001_1111_1100_0011_1111_1100_1100_0000」713c、CRCコード「cccccccc」714cを有する。4つ目のパケットpk4は、リクエストタグ「100」711d、オペレーションコード「リード/32バイト」712d、アドレス「1001_1111_1100_0011_1111_1110_1110_0000」713d、CRCコード「dddddddd」714dを有する。
メインメモリ200は、分割対象外のリードリクエストも分割後のリードリクエストも、単独のリードリクエストとして同様に処理する。メインメモリ200のDRAMコントローラユニット50は、メモリコントローラ30から図7、図8に示すパケットpk0〜pk4を順次、受信する。DRAMコントローラユニット50は、受信したパケットpk0〜pk4について、パケットpk0〜pk4が含むデータを入力としてCRCコードを算出し、パケットが有するCRCコードと比較する。CRCコードが一致しない場合、DRAMコントローラユニット50は、リードリクエストの再送要求をメモリコントローラ30に送信する。
CRCコードが一致する場合、DRAMコントローラユニット50は、リードリクエストに基づいてデータを読み出す。リードリクエストが分割され、対象とするデータのデータ長の1/mに短縮されている場合、DRAMコントローラユニット50は、より短い時間でDRAM60からデータを読み出すことができる。そして、DRAMコントローラユニット50は、読み出したリードデータと、リードデータを入力として算出したCRCコードとを有する応答パケットを生成し、メモリコントローラ30に送信する。リードリクエストが分割され、リードデータのデータ長が1/mに短縮されている場合、DRAMコントローラユニット50は、より少ないサイクルで、応答パケットをメモリコントローラ30に送信できる。
[メモリコントローラの受信側]
次に、図2に示すメモリコントローラ30における、リードリクエスト受信側の各部(応答データ受信部34、リクエスト管理部35)の処理を詳細に説明する。
図9は、図2に示すメモリコントローラ30の応答データ受信部34及びリクエスト管理部35の詳細を説明する図である。応答データ受信部34は、CRC演算器46、シフトレジスタ42、43、AND回路41を有する。シフトレジスタ42は、値「0」「1」を有するデータ有効フラグ47を保持するレジスタである。応答データ受信部34は、DRAMコントローラユニット50から、応答パケットを受信すると、データ有効フラグ47を値「0」から値「1」に遷移させる。また、シフトレジスタ43は、リードデータ82、83を、データ長分、保持する。
ここで、メモリコントローラ30の応答データ受信部34が、DRAMコントローラユニット50から受信する応答パケットの構成、及び、リードリクエストの一例を説明する。
図10、図11は、メモリコントローラ30がDRAMコントローラユニット50から受信する応答パケットを説明する図である。図10は、メモリコントローラ30がDRAMコントローラユニット50から受信する応答パケットのフォーマットを示す図である。また、図11は、メモリコントローラ30がDRAMコントローラユニット50から受信する応答パケットの一例を示す図である。
図10に示すように、応答パケットは、Headerレコード81と、16バイトのリードデータを有する2つのデータレコード82、83と、Tailレコード84のフォーマットからなる。図10の応答パケットは、図6に示すパケットと同様に、Headerレコード及びTailレコードからなる。また、図10の応答パケット及び図6のパケットは、リクエストタグを有する。
Headerレコード81は、リクエストタグ811、パケットのデータ長812を有する。リクエストタグ811は、リードデータが対応するリードリクエストに付与されたリクエストタグ(図6〜図8)711と同様の情報である。Tailレコード84は、CRCコード841を有する。CRCコード841は、リードデータを入力として算出したCRC値である。
図11は、図8に示す、分割して生成したリードリクエストに対応する応答パケットの一例を示す。図11の1つ目の応答パケットpk11は、図8の1つ目のパケットpk1に対応する応答パケットである。1つ目の応答パケットpk11は、リクエストタグ「001」811a、データ長「4サイクル」812a、アドレス「1001_1111_1100_0011_1111_1010_1000_0000」からの32バイトのリードデータを2つに分割した16バイトの各リードデータ82a、83a、CRCコード「eeeeeeee」84aを有する。データ長「4サイクル」812aは、バースト転送時の応答パケットpk11のサイクル数を示す。CRCコード84aは、リードデータ82a、83aを入力として算出したCRC値である。
図11の2つ目の応答パケットpk12は、図8の2つ目のパケットpk2に対応する応答パケットである。2つ目の応答パケットpk12は、リクエストタグ「010」811b、データ長「4サイクル」812b、アドレス「1001_1111_1100_0011_1111_1100_1010_0000」からの32バイトのリードデータを2つに分割した16バイトの各リードデータ82b、83b、CRCコード「ffffffff」84bを有する。CRCコード84bは、リードデータ82b、83bを入力として算出したCRC値である。同様にして、図11の3つ目の応答パケットpk13は、図8の3つ目のパケットpk3に対応する応答パケットであって、図11の4つ目の応答パケットpk14は、図8の4つ目のパケットpk4に対応する応答パケットである。
図9に戻り、CRC演算器46は、応答パケットpk11〜pk14が有するリードデータ82、83のCRCチェックを行う。CRC演算器46は、応答パケットpk11〜pk14が含むリードデータ82、83と、応答パケットpk11〜pk14が含むCRCコード841とを入力とする。CRC演算器46は、リードデータ82、83を入力としてCRCコードを算出する。そして、CRC演算器46は、算出したCRCコードと、応答パケットpk11〜pk14が含むCRCコード841とを比較する。CRC演算器46は、CRCコードが一致する場合にCRC結果一致信号「1」51を、一致しない場合にCRC結果一致信号「0」51を、AND回路41に出力する。また、一致しない場合、CRC演算器46は、DRAMコントローラユニット50に、応答パケットpk11〜pk14の再送依頼52を送信する。
応答パケットが分割して生成されたリードリクエストに対応する応答パケットである場合、CRC演算器46は、例えば、CRCコードが一致しない応答パケットについてのみ、応答パケットの再送依頼52をDRAMコントローラユニット50に送信する。なお、この場合、CRC演算器46は、例えば、CRCコードが一致しない応答パケットに加えて、同一の分割元リードリクエストに基づいて生成された他のリードリクエストに対応する応答パケットについても、再送依頼52を送信してもよい。
AND回路41は、CRC結果一致信号51とデータ有効フラグ47との論理積を、データ有効フラグ91として、キャッシュコントローラ20に出力する。CRC結果一致信号51とデータ有効フラグ47とがともに値「1」である場合に、AND回路41は値「1」のデータ有効フラグ91をキャッシュコントローラ20に出力する。つまり、AND回路41は、CRCコードが一致せず、CRC結果一致信号51が値「0」である場合には、値「0」のデータ有効フラグ91をキャッシュコントローラ20に出力する。
キャッシュコントローラ20は、データ有効フラグ91が値「1」に遷移することをトリガーとして、リードデータ92(82、83)、データ分割情報92、アドレス93、リクエストID94を取り込む。したがって、応答データ受信部34は、CRCコードが一致しない場合、データ転送ミスが発生して値が変化したリードデータ92(82、83)を、キャッシュコントローラ20が取り込んでしまうことを抑止できる。
リクエスト管理部35は、応答パケットpk11〜pk14が含むリクエストタグ811を入力として、データ分割情報92、アドレス93、リクエストID94を取得し、キャッシュコントローラ20に出力する。データ分割情報92は、リードデータ82、83に対応するリードリクエストが、分割して生成されたリクエストであるか否かを示す情報である。また、アドレス93は、リードデータ82、83を読み出したDRAM60のアドレスを示す。リクエストID94は、リードデータ82、83に対応するリードリクエストの要因を示す。また、リクエストID94は、キャッシュコントローラ20がリードリクエストの発行時に、リードリクエストに付与した情報(図4の64)と同一である。
リクエスト管理部35は、管理しているリードリクエストの情報に基づいて、リクエストタグ811を入力として、リードデータ82、83に対応するリードリクエストに分割元のリードリクエストが関連付けられているか否かを判定する。リクエストタグ811に分割元のリードリクエストが関連付けられている場合、リクエスト管理部35は、データ分割情報92を値「1」に設定する。また、リクエストタグ811に分割元のリードリクエストが関連付けられていない場合、リクエスト管理部35は、データ分割情報92を値「0」に設定する。
また、リクエスト管理部35は、管理しているリードリクエストの情報に基づいて、リクエストタグ811を入力として、リードデータ82、83が対応するリードリクエストを特定する。そして、リクエスト管理部35は、特定したリードリクエストのオペレーションコード及びアドレス93及びリクエストID94を取得する。そして、リクエスト管理部35は、アドレス93及びリクエストID94を、キャッシュコントローラ20に出力する。
図12、図13は、メモリコントローラ30がキャッシュコントローラ20に送信するリクエスト応答を説明する図である。図12は、メモリコントローラ30がキャッシュコントローラ20に送信するリクエスト応答のフォーマットを示す図である。図13は、メモリコントローラ30がキャッシュコントローラ20に送信するリクエスト応答の送信例を説明する図である。
図12に示すように、キャッシュコントローラ20に送信されるリクエスト応答は、データ有効フラグ91、データ分割情報92、アドレス93、リクエストID94、リードデータ95のフォーマットからなる。データ分割情報92、アドレス93、リクエストID94は、前述したとおりである。
図13は、図12で説明したリクエスト応答の送信例を示す。メモリコントローラ30は、1サイクルで、データ有効フラグ91、データ分割情報92、アドレス93、リクエストID94を、キャッシュコントローラ20に送信する。また、リードデータ95のデータ長が32バイトである場合(例えば、図10、図11)、メモリコントローラ30は、リードデータ95を2サイクルに分割して、キャッシュコントローラ20に送信する。
キャッシュコントローラ20は、データ有効フラグ91が値「1」に遷移した場合に、データ分割情報92、アドレス93、リクエストID94、リードデータ95を取得する。キャッシュコントローラ20は、例えば、データ分割情報92が値「0」である場合、リードデータ95が対応するリードリクエストが分割されていないリードリクエストである旨、判定する。
そして、キャッシュコントローラ20は、リクエストID94に基づいて、リードリクエストがDMA要求、プリフェッチのいずれに基づくかを判定する。DMA要求に基づくと判定された場合、キャッシュコントローラ20は、リードデータ95をインタフェース部40へ出力する。一方、プリフェッチに基づくと判定された場合、キャッシュコントローラ20は、リードデータ95を、キャッシュメモリ21における、アドレス93及びリクエストID94に基づいて特定されたアドレスに記憶する。
また、データ分割情報92が値「1」である場合、キャッシュコントローラ20は、リードデータ95が対応するリードリクエストが分割して生成されたリードリクエストである旨、判定する。そして、キャッシュコントローラ20は、リードデータ95を、キャッシュメモリ21における、アドレス93及びリクエストID94に基づいて特定されたアドレスに記憶する。また、キャッシュコントローラ20は、リードデータ95が、プロセッサコア10が演算の対象とするデータである場合、プロセッサコア10に通知する。
図14は、メモリコントローラ30がキャッシュコントローラ20に出力するリクエスト応答を説明するタイミングチャートである。図14のタイミングチャート図は、図13で説明したデータ有効フラグ91、データ分割情報92、アドレス93、リクエストID94、リードデータ95に加えて、クロック信号CKを有する。
図14のタイミングチャート図によると、2クロック目t1に、メモリコントローラ30は、値「1」のデータ有効フラグ91及びデータ分割情報92、アドレス「1001_1111_1100_0011_1111_1100_1010_0000」93、リクエストID「xyzxyzxy」94、リードデータ「RD2」95をキャッシュコントローラ20に出力する。また、続く3クロック目t2に、メモリコントローラ30は、値「0」のデータ有効フラグ91及びデータ分割情報92、アドレス「1001_1111_1100_0011_1111_1100_1010_0000」93、リクエストID「xyzxyzxy」94、リードデータ「RD3」95をキャッシュコントローラ20に出力する。また、続く4クロック目では、メモリコントローラ30は、リードデータ95を出力していない。
したがって、キャッシュコントローラ20は、2クロック目t1にデータ有効フラグ91が値「1」に遷移したことをトリガーとして、データ分割情報「1」92、アドレス「1001_1111_1100_0011_1111_1100_1010_0000」93、リクエストID「xyzxyzxy」94、リードデータ「RD2、RD3」95を取得する。そして、キャッシュコントローラ20は、データ分割情報92に基づいて、リードデータ「RD2、RD3」95が分割して生成されたリードリクエストに基づく旨、判定する。また、キャッシュコントローラ20は、リードデータ95を記憶させるキャッシュメモリ21のアドレスを判別し、キャッシュメモリ21にリードデータ「RD2、RD3」95を記憶する。
同様にして、キャッシュコントローラ20は、5クロック目t3に、データ有効フラグ91が値「1」に遷移したことをトリガーとして、データ分割情報「1」92、アドレス「1001_1111_1100_0011_1111_1100_1110_0000」93、リクエストID「xyzxyzxy」94、リードデータ「RD6、RD7」95を取得する。そして、キャッシュコントローラ20は、データ分割情報92、アドレス93、リクエストID94に基づいて、キャッシュメモリ21の対応するアドレスに、リードデータ「RD6」「RD7」95を記憶する。
また、キャッシュコントローラ20は、8クロック目t4に、データ有効フラグ91が値「1」に遷移したことをトリガーとして、データ分割情報「1」92、アドレス「1001_1111_1100_0011_1111_1100_1100_0000」93、リクエストID「xyzxyzxy」94、リードデータ「RD4、RD5」95を取得し、キャッシュメモリ21の対応するアドレスに記憶する。また、キャッシュコントローラ20は、10クロック目t5に、データ有効フラグ91が値「1」に遷移したことをトリガーとして、データ分割情報「1」92、アドレス「1001_1111_1100_0011_1111_1100_1000_0000」93、リクエストID「xyzxyzxy」94、リードデータ「RD0、RD1」95を取得し、キャッシュメモリ21の対応するアドレスに記憶する。
図14に示すように、キャッシュコントローラ20は、リードデータ「RD0、RD1」95より先に、リードデータ「RD2、RD3」95を受信することがある。即ち、分割して生成されたリードリクエストの処理順は、必ずしも、対象とするアドレスの順序に因らない。図14の例において、プロセッサコア10が演算対象とするデータが、例えば、「RD2、RD3」に該当する場合、プロセッサコア10は、リードデータ「RD0〜RD7」全ての受信が完了する前に、演算処理を開始できる。
これに対し、キャッシュミスヒットに基づくリードリクエストを分割しない場合、プロセッサコアは、リードデータ「RD0〜RD7」全ての受信が完了してから、演算対象のデータ「RD2、RD3」に基づいて演算処理を開始する。プロセッサコアのデータ「RD0〜RD7」の読み出しにかかるレイテンシは、データ「RD2、RD3」の読み出しにかかるレイテンシよりも大きい。したがって、本実施の形態例におけるプロセッサ100は、キャッシュミスヒットに基づくリードリクエストを分割することによって、読み出し処理にかかるレイテンシを小さくすることができる。
以上のように、本実施の形態例におけるプロセッサ(演算処理装置)100は、メインメモリ(主記憶装置)200に接続する演算処理装置において、データを記憶するキャッシュメモリ部21と、キャッシュメモリ部に記憶されたデータに対して演算を行うプロセッサコア(演算部)10と、キャッシュメモリ部を制御するとともに、主記憶装置が記憶するデータを読み出す第1の要求(リードリクエスト)を出力するキャッシュコントローラ(第1の制御部)20とを有する。また、演算処理装置(プロセッサ)100は、メインメモリ(主記憶装置)200に接続されるとともに、キャッシュコントローラ(第1の制御部)20が出力する第1の要求を分割した複数の第2の要求(リードリクエスト)をメインメモリ(主記憶装置)200にそれぞれ送信するとともに、送信した複数の第2の要求に対応するデータをメインメモリ(主記憶装置)200からそれぞれ受信して第1の制御部に送信するメモリコントローラ(第2の制御部)30を有する。
リードリクエストを分割することによって、分割後のリードリクエストに基づいて読み出されるデータ長が短くなる。したがって、メインメモリ200におけるデータの読み出し時間が短くなるとともに、リードデータをプロセッサ100にバースト転送するときのサイクル数が減少する。これにより、分割して生成される各リードリクエスト当たりのレイテンシを小さくすることができる。
そして、プロセッサコア10は、分割元のリクエストが対象とするキャッシュラインサイズのデータのうち、一部のデータのみを演算対象とすることが多い。分割して生成されるリードリクエストに基づいて読み出されるリードデータが演算対象のデータを含む場合、プロセッサコア10は、レイテンシが小さい、分割後のリードリクエストに対応するリードデータの受信に応答して、演算処理を開始できる。したがって、プロセッサコア10は、より早いタイミングで演算処理を開始できるため、効率的に演算処理を行うことができる。
また、本実施の形態例におけるプロセッサのメモリコントローラ(第2の制御部)30は、第1の要求(リードリクエスト)に基づいて、第1の要求が読み出し対象とするアドレス範囲を分割したアドレス範囲をそれぞれ読み出し対象とする第2の要求(リードリクエスト)を複数、生成する。これにより、メモリコントローラ30は、第1の要求に基づいて、複数の第2の要求を生成できる。
また、本実施の形態例におけるプロセッサのメモリコントローラ(第2の制御部)30は、第1の要求(リードリクエスト)がキャッシュコントローラ(第1の制御部)20が制御するキャッシュメモリ21のミスヒットに基づく要求である場合に、複数の第2の要求(リードリクエスト)を生成してメインメモリ(主記憶装置)200に送信する。また、メモリコントローラ(第2の制御部)30は、第1の要求がプリフェッチまたはダイレクトメモリアクセスのいずれかに基づく要求である場合は、第1の要求をメインメモリ(主記憶装置)200に送信する。
メモリコントローラ30は、データを分割することによって個々のリードリクエストのレイテンシを小さくする利点が小さいDMA要求及びプリフェッチに基づくリードリクエストを分割の対象としない。そして、メモリコントローラ30は、データを分割することによって個々のリードリクエストのレイテンシを小さくする利点が大きい、キャッシュミスヒットに基づくリードリクエストを分割の対象とすることができる。
また、本実施の形態例におけるプロセッサのメモリコントローラ(第2の制御部)30は、プロセッサコア(演算部)10の処理単位のサイズとキャッシュメモリ21のキャッシュラインサイズとに基づいて設定される第1の要求の分割数(m)に基づいて、分割数個の第2の要求を生成する。これにより、メモリコントローラ30は、分割して生成した各リードリクエストのレイテンシを小さくするとともに、読み出したデータが演算対象の単位のデータを含む確率を高める適切な分割数に、リードリクエストを分割できる。
また、本実施の形態例におけるプロセッサのキャッシュコントローラ(第1の制御部)20は、第1の要求(リードリクエスト)がキャッシュメモリ21のミスヒットに基づく要求である場合に、第2の要求に対応するデータをメインメモリ(主記憶装置)200から受信してキャッシュメモリ21に記憶させるとともに、第2の要求に対応するデータが、プロセッサコア(演算部)10が演算の対象とする演算データである場合にプロセッサコア(演算部)10に通知する。これにより、プロセッサコア10は、分割して生成されたリードリクエストに基づいて、より早いタイミングで演算処理を開始できる。
また、本実施の形態例におけるメインメモリ(主記憶装置)200は、データを記憶する複数の記憶素子(DRAM)60と、可変長のデータを読み出し対象とする第2の要求に応答して、複数の記憶素子に固定長のデータ単位にアクセスして可変長のデータを読み出してメモリコントローラ(第2の制御部)30に送信するDRAMコントロールユニット(第3の制御部)50と、を有する。
これにより、メモリコントローラ30は、分割元のリードリクエストとアクセスする対象データのデータ長が異なるリードリクエストを、メインメモリ200に送信できる。
また、本実施の形態例におけるプロセッサのメモリコントローラ(第2の制御部)30は、メインメモリ(主記憶装置)200から第1、第2の要求に対応するデータとともに当該データに基づく第1のCRCコード(巡回冗長検査値)を受信し、受信した第1、第2の要求に対応するデータに基づいて第2のCRCコード(巡回冗長検査値)を生成する。そして、メモリコントローラ(第2の制御部)30は、第1のCRCコード(巡回冗長検査値)と生成した第2のCRCコード(巡回冗長検査値)とが一致する場合に、受信した第1、第2の要求に対応するデータが有効であると判定する。
これにより、メモリコントローラ30は、リードリクエストを分割することによってリードデータのデータ長を短縮し、CRCエラーの発生率を低下させることによって、CRCエラーによるリードデータの再送に伴う性能低下を抑制することができる。
また、本実施の形態例におけるプロセッサのメモリコントローラ(第2の制御部)30は、第2の要求とともに当該第2の要求と分割元の第1の要求とを関連付けるリクエストタグ(識別情報)をメインメモリ(主記憶装置)200に送信する。そして、メモリコントローラ(第2の制御部)30は、メインメモリ(主記憶装置)200から第2の要求に対応するデータとともにリクエストタグ(識別情報)を受信し、リクエストタグ(識別情報)に基づいて受信したデータに対応する分割元の第1の要求を特定する。これにより、メモリコントローラ30は、メインメモリ200から受信したリードデータに対応する分割元のリードリクエストを特定できる。
また、本実施の形態例におけるプロセッサのキャッシュコントローラ(第1の制御部)20は、特定した分割元の第1の要求に基づいて、受信した第2の要求に対応するデータを記憶するキャッシュメモリ21のアドレスを特定する。これによりメモリコントローラ30は、リクエストタグに基づいて分割元のリードリクエストを特定することによって、リードデータを書き込むキャッシュメモリ21のアドレスを特定できる。
以上の実施の形態をまとめると、次の付記のとおりである。
(付記1)
主記憶装置に接続する演算処理装置において、
データを記憶するキャッシュメモリ部と、
前記キャッシュメモリ部に記憶されたデータに対して演算を行う演算部と、
前記キャッシュメモリ部を制御するとともに、前記主記憶装置が記憶するデータを読み出す第1の要求を出力する第1の制御部と、
前記主記憶装置に接続されるとともに、前記第1の制御部が出力する第1の要求を分割した複数の第2の要求を前記主記憶装置にそれぞれ送信するとともに、送信した前記複数の第2の要求に対応するデータを前記主記憶装置からそれぞれ受信して前記第1の制御部に送信する第2の制御部を有することを特徴とする演算処理装置。
(付記2)
付記1において、
前記第2の制御部は、前記第1の要求に基づいて、前記第1の要求が読み出し対象とするアドレス範囲を分割したアドレス範囲をそれぞれ読み出し対象とする前記第2の要求を複数、生成することを特徴とする演算処理装置。
(付記3)
付記1または2において、
前記第2の制御部は、前記第1の要求が前記第1の制御部が制御するキャッシュメモリ部のミスヒットに基づく要求である場合に、前記複数の第2の要求を生成して前記主記憶装置に送信し、前記第1の要求がプリフェッチまたはダイレクトメモリアクセスのいずれかに基づく要求である場合は、前記第1の要求を前記主記憶装置に送信することを特徴とする演算処理装置。
(付記4)
付記1乃至3のいずれかにおいて、
前記第2の制御部は、前記演算部の処理単位のサイズと前記キャッシュメモリ部のキャッシュラインサイズとに基づいて設定される前記第1の要求の分割数に基づいて、分割数個の第2の要求を生成することを特徴とする演算処理装置。
(付記5)
付記3において、
前記第1の制御部は、前記第1の要求が前記キャッシュメモリ部のミスヒットに基づく要求である場合に、前記第2の要求に対応するデータを前記主記憶装置から受信して前記キャッシュメモリ部に記憶させるとともに、前記第2の要求に対応するデータが、前記演算部が演算の対象とする演算データである場合に前記演算部に通知することを特徴とする演算処理装置。
(付記6)
付記1乃至5のいずれかにおいて、
前記主記憶装置は、前記データを記憶する複数の記憶素子と、可変長のデータを読み出し対象とする前記第2の要求に応答して、前記複数の記憶素子に固定長のデータ単位にアクセスして前記可変長のデータを読み出して前記第2の制御部に送信する第3の制御部と、を有することを特徴とする演算処理装置。
(付記7)
付記1乃至6のいずれかにおいて、
前記第2の制御部は、前記主記憶装置から前記第1、第2の要求に対応するデータとともに当該データに基づく第1の巡回冗長検査値を受信し、前記受信した第1、第2の要求に対応するデータに基づいて第2の巡回冗長検査値を生成し、前記第1の巡回冗長検査値と前記生成した第2の巡回冗長検査値とが一致する場合に、前記受信した第1、第2の要求に対応するデータが有効であると判定することを特徴とする演算処理装置。
(付記8)
付記1乃至7のいずれかにおいて、
前記第2の制御部は、前記第2の要求とともに当該第2の要求と分割元の第1の要求とを関連付ける識別情報を前記主記憶装置に送信し、前記主記憶装置から前記第2の要求に対応するデータとともに前記識別情報を受信し、前記識別情報に基づいて前記受信したデータに対応する分割元の第1の要求を特定することを特徴とする演算処理装置。
(付記9)
付記8において、
前記第1の制御部は、前記特定した分割元の第1の要求に基づいて、前記受信した第2の要求に対応するデータを記憶する前記キャッシュメモリ部のアドレスを特定することを特徴とする演算処理装置。
(付記10)
主記憶装置と、前記主記憶装置に接続する演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
データを記憶するキャッシュメモリ部と、
前記キャッシュメモリ部に記憶されたデータに対して演算を行う演算部と、
前記キャッシュメモリ部を制御するとともに、前記主記憶装置が記憶するデータを読み出す第1の要求を出力する第1の制御部と、
前記主記憶装置に接続されるとともに、前記第1の制御部が出力する第1の要求を分割した複数の第2の要求を前記主記憶装置にそれぞれ送信するとともに、送信した前記複数の第2の要求に対応するデータを前記主記憶装置からそれぞれ受信して前記第1の制御部に送信する第2の制御部を有することを特徴とする情報処理装置。
(付記11)
付記10において、
前記第2の制御部は、前記第1の要求に基づいて、前記第1の要求が読み出し対象とするアドレス範囲を分割したアドレス範囲をそれぞれ読み出し対象とする前記第2の要求を複数、生成することを特徴とする情報処理装置。
(付記12)
付記10または11において、
前記第2の制御部は、前記第1の要求が前記第1の制御部が制御するキャッシュメモリ部のミスヒットに基づく要求である場合に、前記複数の第2の要求を生成して前記主記憶装置に送信し、前記第1の要求がプリフェッチまたはダイレクトメモリアクセスのいずれかに基づく要求である場合は、前記第1の要求を前記主記憶装置に送信することを特徴とする情報処理装置。
(付記13)
付記10乃至12のいずれかにおいて、
前記第2の制御部は、前記演算部の処理単位のサイズと前記キャッシュメモリ部のキャッシュラインサイズとに基づいて設定される前記第1の要求の分割数に基づいて、分割数個の第2の要求を生成することを特徴とする情報処理装置。
(付記14)
付記12において、
前記第1の制御部は、前記第1の要求が前記キャッシュメモリ部のミスヒットに基づく要求である場合に、前記第2の要求に対応するデータを前記主記憶装置から受信して前記キャッシュメモリ部に記憶させるとともに、前記第2の要求に対応するデータが、前記演算部が演算の対象とする演算データである場合に前記演算部に通知することを特徴とする情報処理装置。
(付記15)
付記10乃至14のいずれかにおいて、
前記主記憶装置は、前記データを記憶する複数の記憶素子と、可変長のデータを読み出し対象とする前記第2の要求に応答して、前記複数の記憶素子に固定長のデータ単位にアクセスして前記可変長のデータを読み出して前記第2の制御部に送信する第3の制御部と、を有することを特徴とする情報処理装置。
(付記16)
主記憶装置に接続するとともに、データを記憶するキャッシュメモリ部と、前記キャッシュメモリ部に記憶されたデータに対して演算を行う演算部を有する演算処理装置の制御方法において、
前記演算処理装置が有する第1の制御部が、前記キャッシュメモリ部を制御するとともに、前記主記憶装置が記憶するデータを読み出す第1の要求を出力し、
前記演算処理装置が有する、前記主記憶装置に接続された第2の制御部が、前記第1の制御部が出力する第1の要求を分割した複数の第2の要求を前記主記憶装置にそれぞれ送信し、
前記第1の制御部が送信した前記複数の第2の要求に対応するデータを、前記第2の制御部が前記主記憶装置からそれぞれ受信して前記第1の制御部に送信することを特徴とする演算処理装置の制御方法。
(付記17)
付記16において、
前記第2の制御部は、前記第1の要求に基づいて、前記第1の要求が読み出し対象とするアドレス範囲を分割したアドレス範囲をそれぞれ読み出し対象とする前記第2の要求を複数、生成することを特徴とする演算処理装置の制御方法。
(付記18)
付記16または17において、
前記第2の制御部は、前記第1の要求が前記第1の制御部が制御するキャッシュメモリ部のミスヒットに基づく要求である場合に、前記複数の第2の要求を生成して前記主記憶装置に送信し、前記第1の要求がプリフェッチまたはダイレクトメモリアクセスのいずれかに基づく要求である場合は、前記第1の要求を前記主記憶装置に送信することを特徴とする演算処理装置の制御方法。
(付記19)
付記16乃至18のいずれかにおいて、
前記第2の制御部は、前記演算部の処理単位のサイズと前記キャッシュメモリ部のキャッシュラインサイズとに基づいて設定される前記第1の要求の分割数に基づいて、分割数個の第2の要求を生成することを特徴とする演算処理装置の制御方法。
(付記20)
付記16乃至19のいずれかにおいて、
前記主記憶装置の第3の制御部が、可変長のデータを読み出し対象とする前記第2の要求に応答して、前記前記データを記憶する複数の記憶素子に固定長のデータ単位にアクセスし、前記可変長のデータを読み出して、前記第2の制御部に送信することを特徴とする演算処理装置の制御方法。
100:プロセッサ(演算処理装置)、200:メインメモリ(主記憶装置)、10:プロセッサコア10(演算部)、20:キャッシュコントローラ(第1の制御部)、21:キャッシュメモリ、30:メモリコントローラ(第2の制御部)、40:インタフェース部、50:DRAMコントロールユニット(第3の制御部)、60:DRAM(複数の記憶素子)

Claims (11)

  1. 主記憶装置に接続する演算処理装置において、
    データを記憶するキャッシュメモリ部と、
    前記キャッシュメモリ部に記憶されたデータに対して演算を行う演算部と、
    前記キャッシュメモリ部を制御するとともに、前記主記憶装置が記憶するデータを読み出す第1の要求を出力する第1の制御部と、
    前記主記憶装置に接続されるとともに、前記第1の制御部が出力する第1の要求を分割した複数の第2の要求を前記主記憶装置にそれぞれ送信するとともに、送信した前記複数の第2の要求に対応するデータを前記主記憶装置からそれぞれ受信して前記第1の制御部に送信する第2の制御部を有することを特徴とする演算処理装置。
  2. 請求項1において、
    前記第2の制御部は、前記第1の要求に基づいて、前記第1の要求が読み出し対象とするアドレス範囲を分割したアドレス範囲をそれぞれ読み出し対象とする前記第2の要求を複数、生成することを特徴とする演算処理装置。
  3. 請求項1または2において、
    前記第2の制御部は、前記第1の要求が前記第1の制御部が制御するキャッシュメモリ部のミスヒットに基づく要求である場合に、前記複数の第2の要求を生成して前記主記憶装置に送信し、前記第1の要求がプリフェッチまたはダイレクトメモリアクセスのいずれかに基づく要求である場合は、前記第1の要求を前記主記憶装置に送信することを特徴とする演算処理装置。
  4. 請求項1乃至3のいずれかにおいて、
    前記第2の制御部は、前記演算部の処理単位のサイズと前記キャッシュメモリ部のキャッシュラインサイズとに基づいて設定される前記第1の要求の分割数に基づいて、分割数個の第2の要求を生成することを特徴とする演算処理装置。
  5. 請求項3において、
    前記第1の制御部は、前記第1の要求が前記キャッシュメモリ部のミスヒットに基づく要求である場合に、前記第2の要求に対応するデータを前記主記憶装置から受信して前記キャッシュメモリ部に記憶させるとともに、前記第2の要求に対応するデータが、前記演算部が演算の対象とする演算データである場合に前記演算部に通知することを特徴とする演算処理装置。
  6. 請求項1乃至5のいずれかにおいて、
    前記主記憶装置は、前記データを記憶する複数の記憶素子と、可変長のデータを読み出し対象とする前記第2の要求に応答して、前記複数の記憶素子に固定長のデータ単位にアクセスして前記可変長のデータを読み出して前記第2の制御部に送信する第3の制御部と、を有することを特徴とする演算処理装置。
  7. 請求項1乃至6のいずれかにおいて、
    前記第2の制御部は、前記主記憶装置から前記第1、第2の要求に対応するデータとともに当該データに基づく第1の巡回冗長検査値を受信し、前記受信した第1、第2の要求に対応するデータに基づいて第2の巡回冗長検査値を生成し、前記第1の巡回冗長検査値と前記生成した第2の巡回冗長検査値とが一致する場合に、前記受信した第1、第2の要求に対応するデータが有効であると判定することを特徴とする演算処理装置。
  8. 請求項1乃至7のいずれかにおいて、
    前記第2の制御部は、前記第2の要求とともに当該第2の要求と分割元の第1の要求とを関連付ける識別情報を前記主記憶装置に送信し、前記主記憶装置から前記第2の要求に対応するデータとともに前記識別情報を受信し、前記識別情報に基づいて前記受信したデータに対応する分割元の第1の要求を特定することを特徴とする演算処理装置。
  9. 請求項8において、
    前記第1の制御部は、前記特定した分割元の第1の要求に基づいて、前記受信した第2の要求に対応するデータを記憶する前記キャッシュメモリ部のアドレスを特定することを特徴とする演算処理装置。
  10. 主記憶装置と、前記主記憶装置に接続する演算処理装置とを有する情報処理装置において、
    前記演算処理装置は、
    データを記憶するキャッシュメモリ部と、
    前記キャッシュメモリ部に記憶されたデータに対して演算を行う演算部と、
    前記キャッシュメモリ部を制御するとともに、前記主記憶装置が記憶するデータを読み出す第1の要求を出力する第1の制御部と、
    前記主記憶装置に接続されるとともに、前記第1の制御部が出力する第1の要求を分割した複数の第2の要求を前記主記憶装置にそれぞれ送信するとともに、送信した前記複数の第2の要求に対応するデータを前記主記憶装置からそれぞれ受信して前記第1の制御部に送信する第2の制御部を有することを特徴とする情報処理装置。
  11. 主記憶装置に接続するとともに、データを記憶するキャッシュメモリ部と、前記キャッシュメモリ部に記憶されたデータに対して演算を行う演算部を有する演算処理装置の制御方法において、
    前記演算処理装置が有する第1の制御部が、前記キャッシュメモリ部を制御するとともに、前記主記憶装置が記憶するデータを読み出す第1の要求を出力し、
    前記演算処理装置が有する、前記主記憶装置に接続された第2の制御部が、前記第1の制御部が出力する第1の要求を分割した複数の第2の要求を前記主記憶装置にそれぞれ送信し、
    前記第1の制御部が送信した前記複数の第2の要求に対応するデータを、前記第2の制御部が前記主記憶装置からそれぞれ受信して前記第1の制御部に送信することを特徴とする演算処理装置の制御方法。
JP2014104294A 2014-05-20 2014-05-20 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 Active JP6287571B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014104294A JP6287571B2 (ja) 2014-05-20 2014-05-20 演算処理装置、情報処理装置、及び、演算処理装置の制御方法
US14/708,331 US9766820B2 (en) 2014-05-20 2015-05-11 Arithmetic processing device, information processing device, and control method of arithmetic processing device
EP15167675.6A EP2947572A1 (en) 2014-05-20 2015-05-13 Arithmetic processing device, information processing device, and control method of arithmetic processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014104294A JP6287571B2 (ja) 2014-05-20 2014-05-20 演算処理装置、情報処理装置、及び、演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2015219813A true JP2015219813A (ja) 2015-12-07
JP6287571B2 JP6287571B2 (ja) 2018-03-07

Family

ID=53191490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014104294A Active JP6287571B2 (ja) 2014-05-20 2014-05-20 演算処理装置、情報処理装置、及び、演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US9766820B2 (ja)
EP (1) EP2947572A1 (ja)
JP (1) JP6287571B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102296738B1 (ko) * 2015-06-01 2021-09-01 삼성전자 주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 에러 정정 방법
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
JP6900518B2 (ja) * 2017-06-23 2021-07-07 華為技術有限公司Huawei Technologies Co.,Ltd. メモリアクセス技術およびコンピュータシステム
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
SG11202007272QA (en) 2018-02-02 2020-08-28 Charles Stark Draper Laboratory Inc Systems and methods for policy execution processing
EP3788488A1 (en) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systems and methods for checking safety properties
TW202022678A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61177557A (ja) * 1985-02-01 1986-08-09 Nec Corp キヤツシユメモリ制御方式
JP2004246898A (ja) * 2003-02-13 2004-09-02 Internatl Business Mach Corp <Ibm> キャッシュのロックを使用するストリーミング・データ
JP2009157680A (ja) * 2007-12-27 2009-07-16 Fujitsu Ltd メモリ制御装置
JP2010157113A (ja) * 2008-12-26 2010-07-15 Toshiba Storage Device Corp メモリ制御装置、メモリ最適化プログラムおよびメモリ最適化方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0189944B1 (en) 1985-02-01 1993-05-12 Nec Corporation Cache memory circuit capable of processing a read request during transfer of a data block
US4802125A (en) 1986-11-21 1989-01-31 Nec Corporation Memory access control apparatus
JP3973337B2 (ja) 2000-02-08 2007-09-12 株式会社日立製作所 記憶素子及びそれを用いた記憶装置
JP5411530B2 (ja) * 2009-03-04 2014-02-12 キヤノン株式会社 並列処理プロセッサシステム
US9684685B2 (en) * 2013-10-24 2017-06-20 Sap Se Using message-passing with procedural code in a database kernel

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61177557A (ja) * 1985-02-01 1986-08-09 Nec Corp キヤツシユメモリ制御方式
JP2004246898A (ja) * 2003-02-13 2004-09-02 Internatl Business Mach Corp <Ibm> キャッシュのロックを使用するストリーミング・データ
JP2009157680A (ja) * 2007-12-27 2009-07-16 Fujitsu Ltd メモリ制御装置
JP2010157113A (ja) * 2008-12-26 2010-07-15 Toshiba Storage Device Corp メモリ制御装置、メモリ最適化プログラムおよびメモリ最適化方法

Also Published As

Publication number Publication date
JP6287571B2 (ja) 2018-03-07
US9766820B2 (en) 2017-09-19
US20150339062A1 (en) 2015-11-26
EP2947572A1 (en) 2015-11-25

Similar Documents

Publication Publication Date Title
JP6287571B2 (ja) 演算処理装置、情報処理装置、及び、演算処理装置の制御方法
US11461017B2 (en) Systems and methods for improving efficiencies of a memory system
US10732879B2 (en) Technologies for processing network packets by an intelligent network interface controller
US20190042611A1 (en) Technologies for structured database query for finding unique element values
US9940980B2 (en) Hybrid LPDDR4-DRAM with cached NVM and flash-nand in multi-chip packages for mobile devices
US20180024958A1 (en) Techniques to provide a multi-level memory architecture via interconnects
US9176673B2 (en) Memory device
US8868843B2 (en) Hardware filter for tracking block presence in large caches
US8549231B2 (en) Performing high granularity prefetch from remote memory into a cache on a device without change in address
JP2017519286A (ja) 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供
US20100185811A1 (en) Data processing system and method
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
JP7430282B2 (ja) マルチバンクメモリコマンドの動的統合
WO2014206230A1 (zh) 内存访问方法和内存控制器
JP2016520937A (ja) 組み込みeccアドレスマッピング
US10078602B2 (en) Information processing apparatus, memory controller, and memory control method
US10346049B2 (en) Distributed contiguous reads in a network on a chip architecture
US20230195368A1 (en) Write Request Buffer
US20180196750A1 (en) Aggregating messages for reducing cache invalidation rate
JPWO2014002222A1 (ja) リードリクエスト処理装置
US11223575B2 (en) Re-purposing byte enables as clock enables for power savings
US20150163518A1 (en) Electronic device and information processing method
US20150026408A1 (en) Cache memory system and method of operating the same
US20080077745A1 (en) Data processing device
CN113961487A (zh) 加速存储器存取的电子装置及方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180122

R150 Certificate of patent or registration of utility model

Ref document number: 6287571

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150