JP2009211368A - キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法 - Google Patents

キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法 Download PDF

Info

Publication number
JP2009211368A
JP2009211368A JP2008053191A JP2008053191A JP2009211368A JP 2009211368 A JP2009211368 A JP 2009211368A JP 2008053191 A JP2008053191 A JP 2008053191A JP 2008053191 A JP2008053191 A JP 2008053191A JP 2009211368 A JP2009211368 A JP 2009211368A
Authority
JP
Japan
Prior art keywords
data
vector
cache
stored
memory
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
JP2008053191A
Other languages
English (en)
Other versions
JP4687729B2 (ja
Inventor
Takashi Hagiwara
孝 萩原
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008053191A priority Critical patent/JP4687729B2/ja
Priority to US12/320,888 priority patent/US8095732B2/en
Publication of JP2009211368A publication Critical patent/JP2009211368A/ja
Application granted granted Critical
Publication of JP4687729B2 publication Critical patent/JP4687729B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】キャッシュメモリをベクトルロードバッファ(VLDB)としても利用できるようにすることにより、ベクトル処理装置のハードウェア量および消費電力を低減させる。
【解決手段】ベクトル処理部100内のリクエスト制御部102は、ベクトルロード命令に対応したメモリリクエストを発行する。キャッシュ制御部111は、上記メモリリクエストによって要求されたベクトルデータをデータアレイ112のキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データがデータアレイ112に格納されているか否かを判定する。そして、格納されていない分割データについてはメモリ部120から該当するデータを読み込んでデータアレイ112に格納し、上記ベクトルデータがデータアレイ112に全て格納されてから整列させてベクトル処理部100へ送信する。
【選択図】図1

Description

本発明は、ベクトル処理部、スカラ処理部、ベクトルロードバッファおよびキャッシュメモリを備えたベクトル処理装置に関し、特に、キャッシュメモリにベクトルロードバッファの機能を持たせることにより、ベクトル処理装置のハードウェア量および消費電力を低減させる技術に関する。
従来のベクトル処理装置においては、図7に示すように、ベクトル処理部200内のベクトルレジスタ201とメモリ部220との間の例えばメモリ制御部210内に、メモリ部220から不規則なタイミングで返却される一連のベクトルデータを整列してベクトル処理部200に供給すること、及びベクトルレジスタ201が演算で使用中(ビジー中)であっても先行してメモリ部220からベクトルデータを読み出してメモリレイテンシを隠蔽することの2つを目的として、専用のベクトルロードバッファ(VLDB;Vector Load Buffer)212が設けられている(例えば、特許文献1参照)。なお、整列判定回路211は、要求されたベクトルデータが全てベクトルロードバッファ212に揃ったことをベクトル処理部200に通知する回路である。
一方、スカラプロセッサで採用されるキャッシュメモリは、スカラプロセッサからデータが要求される毎に、要求されたデータを1個(1要素)ずつスカラプロセッサのレジスタに返却するように構成されている。
特開平2−101576号公報
ところで、近年、ベクトルプロセッサの動作周波数の向上に対してメモリレイテンシの改善が追いつかず、このメモリレイテンシを隠蔽するためにベクトルロードバッファの容量(個数)が増加する傾向にある。ベクトルロードバッファの容量を増加させることにより、メモリレイテンシを隠蔽することはできるが、ベクトルロードバッファの容量を増加させた場合には、ハードウェア及び消費電力が増加するという問題が生じる。
このような問題点を解決するためにキャッシュメモリをベクトルロードバッファとして利用することが考えられる。しかし、キャッシュメモリは、スカラプロセッサからデータが1要素要求される毎に、要求されたデータをスカラプロセッサに返却するように構成されており、ベクトルデータの全ての要素が揃ってから連続的に送出する整列機能を備えていないため、ベクトルロードバッファとしては利用することができない。
〔発明の目的〕
そこで、本発明の目的は、キャッシュメモリをベクトルロードバッファとしても利用できるようにすることにより、ベクトル処理装置のハードウェア量および消費電力を低減させることにある。
本発明にかかる第1のキャッシュメモリは、
主記憶装置に格納されているデータの一部の写しが格納されるキャッシュラインを複数備えたデータアレイと、
ベクトル処理部から要求されたベクトルデータを前記データアレイのキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データが前記データアレイに格納されているか否かを判定し、格納されていない分割データについては前記主記憶装置から該当するデータを読み込んで前記データアレイに格納し、前記ベクトルデータが前記データアレイに全て格納されてから前記ベクトル処理部へ送信するキャッシュ制御部とを備えたことを特徴とする。
本発明にかかる第1のベクトル処理装置は、
請求項1乃至4の何れか1項に記載のキャッシュメモリと、
前記キャッシュメモリに対してベクトルデータを要求するメモリリクエストを発行するベクトル処理部と、
前記キャッシュメモリに対してスカラ命令を発行するスカラ処理部とを備えたことを特徴とする。
本発明にかかる第1のベクトルデータ整列方法は、
ベクトル処理部が、キャッシュメモリに対してベクトルデータを要求する第1のステップと、
前記キャッシュメモリが、前記ベクトル処理部から要求された前記ベクトルデータの構成要素の内、自メモリ上に存在しない構成要素を主記憶装置から読み込み、前記ベクトルデータが自メモリ上に全て揃ってから整列させて前記ベクトル処理部へ送信する第2のステップとを含むことを特徴とする。
本発明によれば、ベクトル処理装置のハードウェア量および消費電力を低減できる。
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
〔本発明の実施の形態〕
図1を参照すると、本実施の形態は、ベクトル処理部100と、キャッシュメモリ110と、メモリ部(主記憶装置)120と、スカラ処理部130とを備えている。
ベクトル処理部100は、複数のベクトルレジスタ101と、リクエスト制御部102とを含んでいる。なお、ベクトル処理部100は、ベクトル演算を行う演算処理部、ベクトル命令が格納される命令レジスタなども含んでいるが、本発明とは直接関係しないので図示を省略している。
ベクトルレジスタ101は、メモリ部120に格納されているベクトルデータや、図示を省略した演算処理部の演算結果を格納するレジスタ群であり、一般的に1個のベクトルレジスタにはn(nは複数)個のデータが格納される。このn個のデータをベクトルデータと呼ぶ。
リクエスト制御部102は、図示を省略した命令レジスタにベクトルロード命令が格納されると、それに対応したメモリリクエストをキャッシュメモリ110に対して発行する。このメモリリクエストには、上記ベクトルロード命令が要求しているベクトルデータの開始アドレスと要素数とが含まれる。更に、リクエスト制御部102は、ベクトルレジスタ101の使用状況を管理しており、キャッシュメモリ110から上記メモリリクエストによって要求されたベクトルデータが全てキャッシュメモリ110上に揃っていることを示す格納完了通知が送られてきた場合、上記ベクトルロード命令で指定されているベクトルレジスタが使用可能になっていることを条件にして、キャッシュメモリ110に対して転送可通知を送信する。
キャッシュメモリ110は、キャッシュ制御部111と、データアレイ112と、予約フラグ113と、整列フラグ114とを備えている。
データアレイ112は、複数のキャッシュラインL0〜Lnから構成され、各キャッシュラインL0〜Lnには、メモリ部120に格納されているデータの一部の写しが格納される。
予約フラグ113は、キャッシュラインL0〜Ln毎に設けられており、対応するキャッシュラインがベクトルデータを格納するために使用されるキャッシュラインである場合にセットされる。この予約フラグ113は、ベクトルデータをベクトル処理部100へ送信する前に、スカラ命令によってそのキャッシュラインのデータが置き換えられないようにするためのガードフラグとして機能する。
整列フラグ114は、キャッシュラインL0〜Ln毎に設けられており、対応するキャッシュラインにベクトルデータが格納されているか否かを判定するために利用される。本実施の形態では、キャッシュメモリが備えている各キャッシュライン毎の有効ビット(そのキャッシュラインが有効であるか否かを表示するビット)を整列フラグ114として利用する。
キャッシュ制御部111は、下記(a)〜(f)の機能を有する。
(a)ベクトル処理部100からのメモリリクエストが要求しているベクトルデータをデータアレイ112のキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データがデータアレイ112に格納されている否かを判定する。ベクトルデータをデータアレイ112のキャッシュライン境界で分割するとは、キャッシュラインL0〜Lnのサイズをkバイトとした場合、アドレス(nk−1)のデータを区切りにしてベクトルデータを分割することである。ここで、nは正の整数である。
(b)データアレイ112に格納されていると判定した分割データについては、その分割データが格納されているキャッシュラインに対応する予約フラグ113をセットする。
(c)データアレイ112に格納されていないと判定した分割データについては、その分割データを格納するキャッシュラインを決定し、そのキャッシュラインに対応する予約フラグ113をセットする。更に、メモリ部120から該当するデータを読み込んで、上記決定したキャッシュラインに格納し、そのキャッシュラインの整列フラグ114をセットする。
(d)メモリリクエストによって要求されているベクトルデータが全てデータアレイ112に格納されているか否かを整列フラグ114に基づいて判定し、全て格納されていると判定した場合、ベクトル処理部100に対して格納完了通知を送信する。
(e)ベクトル処理部100から転送可通知が送られてきた場合、データアレイ112に格納されている、メモリリクエストによって要求されたベクトルデータを整列させてベクトル処理部100へ送信し、その後、上記ベクトルデータが格納されていたキャッシュラインの予約フラグ113をリセットする。
(f)スカラ処理部130からのスカラ命令を処理する機能。本実施の形態のキャッシュ制御部111は、スカラ命令の処理に関しては、下記(f−1)、(f−2)を除いて、通常のキャッシュメモリのキャッシュ制御部と同様の処理を行う。
(f−1)スカラ処理部130からのスカラ命令によってアクセスされるデータがデータアレイ112上に存在しないことによりキャッシュラインのデータの置き換えを行う場合は、予約フラグ113がセットされていないキャッシュラインを対象にしてデータの置き換えを行う。
(f−2)スカラ処理部130からのスカラ命令に従って書き替えるデータが予約フラグ113がセットされているキャッシュラインに格納されている場合は、予約フラグ114がリセットされるまで、上記データの書き替えを抑止する。
スカラ処理部130は、キャッシュメモリ110に対してスカラ命令(ロード命令、ストア命令)を発行する。
〔実施の形態の動作の説明〕
次に、本実施の形態の動作について説明する。
ベクトル処理部100内のリクエスト制御部102は、命令レジスタにベクトルロード命令が格納されると、それに対応したメモリリクエストをキャッシュメモリ110に対して発行する。このメモリリクエストには、ベクトルロード命令によって要求されているベクトルデータの開始アドレスと要素数とが含まれている。
キャッシュ制御部111は、メモリリクエストを受信すると、それに含まれている開始アドレスと要素数とによって示されるベクトルデータをデータアレイ112のキャッシュライン境界で分割し、分割データを得る。その後、各分割データ毎に、その分割データが整列フラグ114がセットされているキャッシュラインに格納されているか否かを調べる。
そして、データアレイ112に格納されている分割データについては、その分割データが格納されているキャッシュラインに対応する予約フラグ113をセットする。これに対して、データアレイ112に格納されていない分割データについては、その分割データを格納するキャッシュラインを決定し、そのキャッシュラインの予約フラグ113をセットする。更に、メモリ部120に対して、上記分割データを含むブロックのデータを要求するロードリクエストを発行し、データの到着を待つ。メモリ部120からのデータが到着すると、そのデータを既に決定してあるキャッシュラインに格納すると共に、そのキャッシュラインの整列フラグ114をセットする。
その後、キャッシュ制御部111は、ベクトルデータの分割データを格納するキャッシュラインの整列フラグ114が全てセットされたことを検出すると、ベクトルデータが全て揃ったことを知らせるために格納完了通知をベクトル処理部100に送信する。
ベクトル処理部100内のリクエスト制御部102は、格納完了通知を受信すると、ベクトルロード命令で指定されているベクトルレジスタ101が使用可能であることを条件にして、キャッシュメモリ110に対して転送可通知を送信する。これにより、キャッシュメモリ110内のキャッシュ制御部111は、予約フラグ113及び整列フラグ114がセットされているキャッシュラインに格納されているベクトルデータを整列させてベクトル処理部100に送信し、送信が完了したキャッシュラインの予約フラグ113をリセットする。これにより、ベクトルデータを格納するために使用されていた各キャッシュラインもスカラ命令での置換対象となる。
なお、本実施の形態では、有効ビットを利用して整列フラグ114を実現したが有効ビットとは別に整列フラグ114を新たに設けるようにしても良い。
〔実施の形態の効果〕
本実施の形態によれば、ベクトル処理装置のハードウェア量および消費電力を低減できる。その理由は、キャッシュメモリ110をベクトルロードバッファの代用にすることができるからである。キャッシュメモリ110をベクトルロードバッファの代用にすることができる理由は、ベクトル処理部100から要求されたベクトルデータをデータアレイ112のキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データがデータアレイ112に格納されているか否かを判定し、格納されていない分割データについてはメモリ部120から該当するデータを読み込んでデータアレイ112に格納し、ベクトルデータがデータアレイ112に全て格納されてからベクトル処理部100へ整列させて送信するキャッシュ制御部110を備えているからである。
また、本実施の形態によれば、スカラ処理部130を停止させることなく、キャッシュメモリ110をベクトルロードバッファの代用として使用することができる。その理由は、キャッシュ制御部111が、ミスヒット時にキャッシュラインのデータの置き換えを行う場合は、予約フラグ113がセットされていないキャッシュラインを対象にしてデータの置き換えを行い、スカラ命令に従って書き替えるデータが予約フラグ113のセットされているキャッシュラインに格納されている場合は予約フラグ113がリセットされるまで、データの書き替えを抑止するようにしているからである。
〔実施例〕
次に、本実施の形態の実施例について説明する。
図2を参照すると、本実施例で利用するキャッシュ制御部111は、キャッシュヒット判定手段1111と、管理テーブル記憶部1112と、整列判定手段1113と、格納手段1114とを備えている。
キャッシュヒット判定手段1111は、下記(g)〜(k)の機能を有する。
(g)リクエスト制御部102からのメモリリクエストによって要求されているベクトルデータをデータアレイ112のキャッシュライン境界で分割することにより、複数の分割データを生成する。例えば、メモリリクエストに含まれているベクトルデータの開始アドレス、要素数がそれぞれ「192」「256」、1要素が「1バイト」(説明を分かりやすくするため便宜上1バイトとする)、キャッシュラインL0〜Lnそれぞれのサイズが「128バイト」であるとすると、アドレス「192〜255」の分割データと、アドレス「256〜383」の分割データと、アドレス「384〜447」の分割データとの3つの分割データを生成することになる。なお、本実施例では、リクエスト制御部102からのメモリリクエストには、開始アドレス、要素数に加えて、リクエスト制御部102がメモリリクエストを発行する契機となったベクトルロード命令を特定するベクトルロード命令IDも含まれている。
(h)リクエスト制御部102から送られてきたメモリリクエスト毎の管理テーブルであって、そのメモリリクエストに関連する各分割データのアドレス情報、キャッシュラインIDを管理する管理テーブルを生成して管理テーブル記憶部1112に格納し、必要に応じてその内容を更新する。分割データのアドレス情報とは、その分割データのメモリ部120上のアドレスを示す情報であり、キャッシュラインIDとは、その分割データが格納されている或いは格納されるキャッシュラインを示す情報である。図3に管理テーブルの一例を示す。この例は、ベクトルロード命令ID「VLn」のベクトルロード命令に対応する管理テーブルであり、上記ベクトルロード命令によって要求されているベクトルデータは、アドレス「192〜255」の分割データと、アドレス「256〜383」の分割データと、アドレス「384〜447」の分割データに分割され、各分割データがそれぞれキャッシュラインID「ID1」「ID10」「ID3」のキャッシュラインに格納されている或いは格納されることを示している。なお、本実施例では、各キャッシュラインL0〜LnにはそれぞれキャッシュラインIDとして「ID1〜IDn」が付与されている。また、以下の説明ではベクトルロード命令ID「VLn」のベクトルロード命令を単にベクトルロード命令「VLn」と記す場合もある。
(i)分割データ毎に、その分割データがデータアレイ112に格納されているか否かを判定する。
(j)データアレイ112に格納されていると判定した分割データについては、その分割データが格納されているキャッシュラインに対応する予約フラグ113をセット(本実施例では、“1”を設定)する。
(k)データアレイ112に格納されていないと判定した分割データについては、その分割データを含んだブロックのデータを要求するロードリクエストをメモリ部120に対して発行し、更に、上記分割データを格納するキャッシュラインを決定してそのキャッシュラインに対応する予約フラグ113をセットする。
整列判定手段1113は、管理テーブル記憶部1112に登録されている管理テーブル毎に、その管理テーブルに登録されているキャッシュラインIDに対応する整列フラグが全てセットされているか否かを判定することにより、その管理テーブルで管理しているメモリリクエストによって要求されているベクトルデータが全てデータアレイ112上に存在するか否かを判定し、全て存在すると判定した場合、ベクトル処理部100に対して格納完了通知(その管理テーブルに登録されているベクトルロード命令IDを含む)を送信する。その後、ベクトル処理部100から転送可通知(ベクトルロード命令IDを含む)が送られてきたことを条件として、管理テーブルに格納されているアドレス情報およびキャッシュラインIDに基づいて、該当するベクトルデータを整列してベクトル処理部100へ送信する。
格納手段1114は、メモリ部120から送られてきたデータをデータアレイ112に格納し、データを格納したキャッシュラインの整列フラグ114をセットする。
なお、ここでは説明を省略するが、キャッシュ制御部111は、スカラ処理部130からのスカラ命令を処理する機能を有している。この機能は、前述した実施の形態の通りである。また、本実施例においても、キャッシュメモリが備えている有効ビットを整列フラグ114として利用する。
〔実施例の動作の説明〕
次に、本実施例の動作を詳細に説明する。
ベクトル処理部100内のリクエスト制御部102は、命令レジスタにベクトルロード命令がセットされると、それに対応したメモリリクエストをキャッシュメモリ110に対して発行する。このメモリリクエストには、ベクトルロード命令が要求しているベクトルデータの開始アドレス及び要素数と、ベクトルロード命令IDとが含まれている。
キャッシュメモリ110内のキャッシュヒット判定手段1111は、リクエスト制御部102からメモリリクエストが送られてくると、図4の流れ図に示す処理を行う。今、例えば、メモリリクエストに含まれている開始アドレス、要素数、ベクトルロード命令IDがそれぞれ「192」「256」「VLn」であり、1要素が「1バイト」、キャッシュラインL0〜Lnのサイズがそれぞれ「128バイト」であるとすると、キャッシュヒット判定手段1111において次のような処理が行われる。
先ず、キャッシュヒット判定手段1111は、メモリリクエストによって要求されているベクトルデータ(アドレス「192〜447」のデータ)を、データアレイ112のキャッシュライン境界で分割することにより、複数の分割データを生成する。この例では、アドレス「192〜255」の分割データD1と、アドレス「256〜383」の分割データD2と、アドレス「384〜447」の分割データD3との3つの分割データが生成される。
次に、図3に示すような管理テーブルを生成し、管理テーブル記憶部1112に格納する(ステップS41)。但し、この時点では、ベクトルロード命令ID「VLn」と各分割データD1〜D3のアドレス情報だけが登録され、キャッシュラインIDは登録されていない。
その後、キャッシュヒット判定手段1111は、最初の分割データD1に注目し、それがデータアレイ112に格納されているか否かを判定する(ステップS42、S43)。この判定は、分割データD1のアドレス情報によって示されるアドレスの内の何れか1つが、整列フラグ114がセットされているキャッシュラインに格納されているか否かを判定することにより行う。
そして、分割データD1がデータアレイ112に格納されている場合は、分割データD1が格納されているキャッシュラインに対応する予約フラグ113をセットし、その後、管理テーブルに分割データD1のキャッシュラインIDとして上記キャッシュラインのIDを登録する(ステップS43がYES、S44、S45)。
これに対して、分割データD1がデータアレイ112に格納されていない場合は、予約フラグ113がセットされていないキャッシュラインの中から分割データD1を格納するキャッシュラインを1つ決定し、更に、メモリ部120に対して分割データD1を含むブロックのデータを要求するメモリリクエストを発行する(ステップS43がNO、S48)。その後、上記決定したキャッシュラインに対応する予約フラグ113をセットし、更に、管理テーブルに分割データD1のキャッシュラインIDとして上記決定したキャッシュラインのIDを登録する(ステップS44、S45)。
そして、ステップS45の処理が終了すると、次の分割データD2に注目し(ステップS47)、前述した処理と同様の処理を行う。以上の処理を分割データD3まで行い、未注目の分割データがなくなると(ステップS46がYES)、キャッシュヒット判定手段1111は、処理を終了する。
一方、格納手段1114では、メモリ部120からデータが送られてくる毎に、そのデータをデータアレイ112の該当するキャッシュラインに格納し、そのキャッシュラインの整列フラグ114をセットする処理を行っている(図6のステップS60、S61)。
また、整列判定手段1113は、管理テーブル記憶部1112に格納されている管理テーブル毎に、図5の流れ図に示す処理を行っている。
整列判定手段1113は、例えば、図3に示す管理テーブルが管理テーブル記憶部1112に登録されると、管理テーブルに登録されているキャッシュラインID「ID1、ID10、ID3」に対応するキャッシュライン「L1、L10、L3」の整列フラグ114が全てセットされるのを待つことにより、ベクトルロード命令「VLn」によって要求されているベクトルデータがデータアレイ112上に全て揃うのを待つ(ステップS50)。
そして、ベクトルデータが全て揃うと、ベクトル処理部100内のリクエスト制御部102に対して格納完了通知を送信し、リクエスト制御部102から転送可通知が送られてくるのを待つ(ステップS50がYES、S51、S52)。なお、格納完了通知には、管理テーブルに登録されているベクトルロード命令ID「VLn」が含まれている。
リクエスト制御部102は、ベクトルロード命令「VLn」によって指定されているベクトルレジスタが使用可能な状態であることを条件にして、整列判定手段1113に対して転送可通知を送信する。この転送可通知には、ベクトルロード命令ID「VLn」が含まれている。
整列判定手段1113はベクトルロード命令ID「VLn」を含む転送可通知を受信すると、ベクトルロード命令「VLn」によって要求されているベクトルデータをベクトル処理部100へ送信する(ステップS53)。その際、整列判定手段1113は、図3に示した管理テーブルを参照し、先ず、キャッシュラインL1に登録されている最若番のアドレス「192〜255」のデータ、次いでキャッシュラインL10に登録されているアドレス「256〜383」のデータ、最後にキャッシュラインL3に登録されているアドレス「384〜447」のデータをベクトル処理部100へ送信する。即ち、ベクトルデータを整列させてベクトル処理部100へ送信する。
その後、整列判定手段1113は処理対象にしていた図3の管理テーブルを削除すると共に、その管理テーブルに登録されていたキャッシュラインIDに対応する予約フラグをリセットし(ステップS54)、上記管理テーブルに対する処理を終了する。
〔実施例の効果〕
本実施例によれば、ベクトル処理装置のハードウェア量および消費電力を低減できる。その理由は、キャッシュメモリ110をベクトルロードバッファの代用とすることができるからである。キャッシュメモリ110をベクトルロードバッファの代用にすることができる理由は、ベクトル処理部100から要求されたベクトルデータをデータアレイ112のキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データがデータアレイ112に格納されているか否かを判定するキャッシュヒット判定手段1111と、データアレイ112に格納されていない分割データについてはメモリ部120から該当するデータを読み込んでデータアレイ112に格納し、ベクトルデータがデータアレイ112に全て格納されてから整列させてベクトル処理部100へ送信する整列判定手段1113とを備えているからである。
本発明は、スーパコンピュータ等に適用すると好適である。
本発明にかかるベクトル処理装置の実施の形態の構成例を示すブロック図である。 実施の形態の実施例で使用するキャッシュメモリ110の構成例を示すブロック図である。 管理テーブルの一例を示す図である。 キャッシュヒット判定手段1111の処理例を示す流れ図である。 整列判定手段1113の処理例を示す流れ図である。 格納手段1114の処理例を示す流れ図である。 従来のベクトル処理装置の構成例を示すブロック図である。
符号の説明
100…ベクトル処理部
101…ベクトルレジスタ
102…リクエスト制御部
110…キャッシュメモリ
111…キャッシュ制御部
1111…キャッシュヒット判定手段
1112…管理テーブル記憶部
1113…整列判定手段
1114…格納手段
112…データアレイ
113…予約フラグ
114…整列フラグ
120…メモリ部
130…スカラ処理部

Claims (7)

  1. 主記憶装置に格納されているデータの一部の写しが格納されるキャッシュラインを複数備えたデータアレイと、
    ベクトル処理部から要求されたベクトルデータを前記データアレイのキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データが前記データアレイに格納されているか否かを判定し、格納されていない分割データについては前記主記憶装置から該当するデータを読み込んで前記データアレイに格納し、前記ベクトルデータが前記データアレイに全て格納されてから前記ベクトル処理部へ送信するキャッシュ制御部とを備えたことを特徴とするキャッシュメモリ。
  2. 請求項1記載のキャッシュメモリにおいて、
    前記キャッシュ制御部は、前記分割データ毎に、その分割データが前記データアレイに格納されている場合には該格納されているキャッシュラインの情報を管理テーブルに記録し、格納されていなければ前記主記憶装置に対してロードリクエストを送出して、該ロードリクエストによって前記主記憶装置から読み出されるデータを格納するキャッシュラインの情報を前記管理テーブルに記録し、前記管理テーブルに記録された全てのキャッシュラインに前記分割データが格納されたか否かを判定することを特徴とするキャッシュメモリ。
  3. 請求項1または2記載のキャッシュメモリにおいて、
    前記キャッシュライン毎の予約フラグであって、そのキャッシュラインが前記ベクトルデータの分割データを格納するために使用するキャッシュラインである場合にセットされる予約フラグを備え、且つ、
    前記キャッシュ制御部が、スカラ処理部からのスカラ命令によってアクセスされるデータが前記データアレイ上に存在しないことにより、キャッシュラインのデータの置き換えを行う場合は、予約フラグがセットされていないキャッシュラインを対象にしてデータの置き換えを行うことを特徴とするキャッシュメモリ。
  4. 請求項3記載のキャッシュメモリにおいて、
    前記キャッシュ制御部が、前記スカラ処理部からのスカラ命令に従って書き替えるデータが予約フラグがセットされているキャッシュラインに格納されている場合は、前記予約フラグがリセットされるまで、前記データの書き替えを抑止することを特徴とするキャッシュメモリ。
  5. 請求項1乃至4の何れか1項に記載のキャッシュメモリと、
    前記キャッシュメモリに対してベクトルデータを要求するメモリリクエストを発行するベクトル処理部と、
    前記キャッシュメモリに対してスカラ命令を発行するスカラ処理部とを備えたことを特徴とするベクトル処理装置。
  6. ベクトル処理部が、キャッシュメモリに対してベクトルデータを要求する第1のステップと、
    前記キャッシュメモリが、前記ベクトル処理部から要求された前記ベクトルデータの構成要素の内、自メモリ上に存在しない構成要素を主記憶装置から読み込み、前記ベクトルデータが自メモリ上に全て揃ってから整列させて前記ベクトル処理部へ送信する第2のステップとを含むことを特徴とするベクトルデータ整列方法。
  7. 請求項6記載のベクトルデータ整列方法において、
    前記第2のステップは、
    前記ベクトルデータをデータアレイのキャッシュライン境界で分割することにより得られる分割データ毎にその分割データが前記データアレイに格納されているか否かを判定する第3のステップと、
    該第3のステップで前記データアレイに格納されていないと判定された分割データを前記主記憶装置から読み込んで前記データアレイに格納し、前記ベクトルデータが前記データアレイに全て格納されてから整列させて前記ベクトル処理部へ送信する第4のステップとを含むことを特徴とするベクトルデータ整列方法。
JP2008053191A 2008-03-04 2008-03-04 キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法 Active JP4687729B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008053191A JP4687729B2 (ja) 2008-03-04 2008-03-04 キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法
US12/320,888 US8095732B2 (en) 2008-03-04 2009-02-06 Apparatus, processor, cache memory and method of processing vector data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008053191A JP4687729B2 (ja) 2008-03-04 2008-03-04 キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法

Publications (2)

Publication Number Publication Date
JP2009211368A true JP2009211368A (ja) 2009-09-17
JP4687729B2 JP4687729B2 (ja) 2011-05-25

Family

ID=41054795

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008053191A Active JP4687729B2 (ja) 2008-03-04 2008-03-04 キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法

Country Status (2)

Country Link
US (1) US8095732B2 (ja)
JP (1) JP4687729B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117217274A (zh) * 2023-11-08 2023-12-12 深圳市九天睿芯科技有限公司 向量处理器、神经网络加速器、芯片及电子设备
CN117217274B (zh) * 2023-11-08 2024-06-04 深圳市九天睿芯科技有限公司 向量处理器、神经网络加速器、芯片及电子设备

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7850400B2 (en) * 2004-11-25 2010-12-14 Freyssinet International (Stup) Stabilized soil structure and facing elements for its construction
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
JP2011097197A (ja) * 2009-10-27 2011-05-12 Yamaha Corp メモリアクセス制御装置
JP2011097198A (ja) * 2009-10-27 2011-05-12 Yamaha Corp メモリアクセス制御装置
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US8904153B2 (en) * 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
JP5240270B2 (ja) * 2010-10-12 2013-07-17 日本電気株式会社 プロセッサ及びベクトルロード命令の実行方法
US8635431B2 (en) * 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US9405551B2 (en) 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US10691456B2 (en) 2015-11-13 2020-06-23 International Business Machines Corporation Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing
US10691453B2 (en) * 2015-11-13 2020-06-23 International Business Machines Corporation Vector load with instruction-specified byte count less than a vector size for big and little endian processing
WO2017143502A1 (en) * 2016-02-23 2017-08-31 Intel Corporation Optimizing structures to fit into a complete cache line

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6031664A (ja) * 1983-08-01 1985-02-18 Nippon Telegr & Teleph Corp <Ntt> キヤツシユ先行アクセス方式
JPS6041147A (ja) * 1983-08-13 1985-03-04 Fujitsu Ltd バッファ記憶制御方式
JPH01251273A (ja) * 1988-03-31 1989-10-06 Mitsubishi Electric Corp ベクトル処理装置
JPH02101576A (ja) * 1988-10-11 1990-04-13 Nec Corp ベクトル処理装置
JPH04505225A (ja) * 1988-01-11 1992-09-10 ディジタル イクイプメント コーポレーション スカラー処理用に設計されたメモリシステムでメモリからベクトルデータをプリフェッチする方法
JPH07271673A (ja) * 1994-03-31 1995-10-20 Mitsubishi Electric Corp キャッシュメモリ
JP2000099496A (ja) * 1998-09-18 2000-04-07 Fujitsu Ltd キャッシュ記憶装置
JP2004118305A (ja) * 2002-09-24 2004-04-15 Sharp Corp キャッシュメモリ制御装置
JP2005025693A (ja) * 2003-07-04 2005-01-27 Nec Computertechno Ltd ベクトル処理装置およびベクトルロード方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594682A (en) * 1982-12-22 1986-06-10 Ibm Corporation Vector processing
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
IT1271171B (it) 1993-04-08 1997-05-27 Fichtel & Sachs Ag Ammortizzatore operante selettivamente nella frequenza
JP3697990B2 (ja) 2000-01-06 2005-09-21 日本電気株式会社 ベクトル処理装置のオペランドキャッシュ
US6591345B1 (en) * 2000-11-28 2003-07-08 Hewlett-Packard Development Company, L.P. Method for ensuring maximum bandwidth on accesses to strided vectors in a bank-interleaved cache
US7246203B2 (en) * 2004-11-19 2007-07-17 Motorola, Inc. Queuing cache for vectors with elements in predictable order

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6031664A (ja) * 1983-08-01 1985-02-18 Nippon Telegr & Teleph Corp <Ntt> キヤツシユ先行アクセス方式
JPS6041147A (ja) * 1983-08-13 1985-03-04 Fujitsu Ltd バッファ記憶制御方式
JPH04505225A (ja) * 1988-01-11 1992-09-10 ディジタル イクイプメント コーポレーション スカラー処理用に設計されたメモリシステムでメモリからベクトルデータをプリフェッチする方法
JPH01251273A (ja) * 1988-03-31 1989-10-06 Mitsubishi Electric Corp ベクトル処理装置
JPH02101576A (ja) * 1988-10-11 1990-04-13 Nec Corp ベクトル処理装置
JPH07271673A (ja) * 1994-03-31 1995-10-20 Mitsubishi Electric Corp キャッシュメモリ
JP2000099496A (ja) * 1998-09-18 2000-04-07 Fujitsu Ltd キャッシュ記憶装置
JP2004118305A (ja) * 2002-09-24 2004-04-15 Sharp Corp キャッシュメモリ制御装置
JP2005025693A (ja) * 2003-07-04 2005-01-27 Nec Computertechno Ltd ベクトル処理装置およびベクトルロード方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117217274A (zh) * 2023-11-08 2023-12-12 深圳市九天睿芯科技有限公司 向量处理器、神经网络加速器、芯片及电子设备
CN117217274B (zh) * 2023-11-08 2024-06-04 深圳市九天睿芯科技有限公司 向量处理器、神经网络加速器、芯片及电子设备

Also Published As

Publication number Publication date
US8095732B2 (en) 2012-01-10
JP4687729B2 (ja) 2011-05-25
US20090228657A1 (en) 2009-09-10

Similar Documents

Publication Publication Date Title
JP4687729B2 (ja) キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法
JP4896376B2 (ja) コプロセッサの性能を強化するシステムおよび方法
US8756374B2 (en) Store queue supporting ordered and unordered stores
EP2839379B1 (en) A write-only dataless state for maintaining cache coherency
JP5335743B2 (ja) タスクのスケジューリングを支援する装置
US8453121B2 (en) Managing the tracing of the execution of a computer program
JP3289661B2 (ja) キャッシュメモリシステム
US7600077B2 (en) Cache circuitry, data processing apparatus and method for handling write access requests
US20100115250A1 (en) Context switching and synchronization
US7757044B2 (en) Facilitating store reordering through cacheline marking
US8868844B2 (en) System and method for a software managed cache in a multiprocessing environment
US20140032854A1 (en) Coherence Management Using a Coherent Domain Table
JP2004246898A (ja) キャッシュのロックを使用するストリーミング・データ
US8806135B1 (en) Load store unit with load miss result buffer
JP5499987B2 (ja) 共有キャッシュメモリ装置
CN113924558A (zh) 阶层式存储器系统中的存储器管线控制
JP2020507848A (ja) メモリシステムへの加速されたアクセスを提供するための方法及び機器
JP2007226641A (ja) 情報処理装置、キャッシュ制御方法及びプログラム
JP6319473B1 (ja) 情報処理装置
US7512722B2 (en) Method for completing a plurality of chained list DMA commands that include a fenced list DMA command element
US20070101064A1 (en) Cache controller and method
JP2015106312A (ja) 並列計算機システム、並列計算機システムの制御方法、情報処理装置、演算処理装置および通信制御装置
JP5168800B2 (ja) マルチプロセッサシステム
JPWO2010119932A1 (ja) マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム
JP4924970B2 (ja) データ処理システム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20091009

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20091009

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100416

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110131

R150 Certificate of patent or registration of utility model

Ref document number: 4687729

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3