(57)【特許請求の範囲】
【請求項１】
複数の要素データ各々をアドレスに対応付けて格納するメモリと、
前記メモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度と保持するメモリアクセス命令の数に関する情報とが対応付けられたテーブルを参照し、保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備えるメモリアクセス制御装置。
【請求項２】
前記監視部は、
前記混雑度として、仕掛かり中のアクセスリクエスト数、又は前記アクセスリクエストが前記生成部で生成されてからリプライデータを受け付けるまでの時間を監視し、
前記保持部は、
仕掛かり中のアクセスリクエスト数に対応するクロック数、又はアクセスリクエストが前記生成部で生成されてからリプライデータを受け付けるまでの時間に対応するクロック数だけメモリアクセス命令を保持する、
ことを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項３】
前記保持部は、
仕掛かり中のアクセスリクエスト数に対応する数の後続のメモリアクセス命令を保持する、
ことを特徴とする請求項２に記載のメモリアクセス制御装置。
【請求項４】
前記命令発行部によって発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する命令検出部とをさらに備え、
前記所定の条件は、
前記命令検出部で検出されたメモリアクセス命令であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ベースアドレスの差が前記メモリのバンクのサイズ内であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、前記複数のメモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲がある、
ことを特徴とする請求項１乃至３のいずれか一項に記載のメモリアクセス制御装置。
【請求項５】
前記メモリアクセス命令は、
前記メモリに格納された複数の要素データを読み出すベクトルロード命令及び前記メモリに複数の要素データを格納するベクトルストア命令を含むメモリアクセス命令を含む、
ことを特徴とする請求項１乃至４のいずれか一項に記載のメモリアクセス制御装置。
【請求項６】
複数のメモリアクセス制御装置を備えるプロセッサであって、
前記メモリアクセス制御装置各々は、
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度と保持するメモリアクセス命令の数に関する情報とが対応付けられたテーブルを参照し、保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備えるプロセッサ。
【請求項７】
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行工程と、
前記メモリに対するアクセスの混雑度を監視する監視工程と、
前記命令発行工程において発行された複数のメモリアクセス命令を保持して、前記監視工程で監視された混雑度と保持するメモリアクセス命令の数に関する情報とが対応付けられたテーブルを参照し、保持するメモリアクセス命令の数を増減させる保持工程と、
前記保持工程で保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成工程と、
前記生成工程で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理工程と、
を含むメモリアクセス制御方法。
【請求項８】
複数の要素データ各々をアドレスに対応付けて格納するメモリと、
前記メモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記命令発行部によって発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する命令検出部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、前記命令検出部で検出されたメモリアクセス命令であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ベースアドレスの差が前記メモリのバンクのサイズ内であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、前記複数のメモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲がある複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備えるメモリアクセス制御装置。
【請求項９】
複数のメモリアクセス制御装置を備えるプロセッサであって、
前記メモリアクセス制御装置各々は、
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記命令発行部によって発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する命令検出部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、前記命令検出部で検出されたメモリアクセス命令であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ベースアドレスの差が前記メモリのバンクのサイズ内であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、前記複数のメモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲がある複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備えるプロセッサ。
【請求項１０】
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行工程と、
前記命令発行工程において発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する命令検出工程と、
前記メモリに対するアクセスの混雑度を監視する監視工程と、
前記命令発行工程において発行された複数のメモリアクセス命令を保持して、前記監視工程で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持工程と、
前記保持工程で保持された前記メモリアクセス命令のうち、前記命令検出工程で検出されたメモリアクセス命令であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ベースアドレスの差が前記メモリのバンクのサイズ内であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、前記複数のメモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲がある複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成工程と、
前記生成工程で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理工程と、
を含むメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス制御装置、プロセッサ及びメモリアクセス制御方法に関する。
【背景技術】
【０００２】
近年、半導体技術の向上により、ＬＳＩ（Large Scale Integration）に搭載される論理回路の数が飛躍的に増加している。論理回路の数の増加に伴い、ＣＰＵ（Central Processing Unit）の演算性能が大きく向上している。しかし、メモリ帯域の向上は、ＲＡＭ（Random Access Memory）の性能とＬＳＩのピン数に依存するので、ＣＰＵの演算性能の向上に見合うだけのメモリ帯域の向上を実現するのは困難な状況である。また、マルチコアを搭載するＣＰＵでは、各コアがメモリ帯域を共有している。このようなＣＰＵでは、各コアが実行するアプリケーションに応じてコア間でメモリ帯域の利用に偏りが生じた場合には、ＣＰＵの演算性能が低下する。このため、メモリ帯域の利用効率の向上が望まれている。
【０００３】
例えば、特許文献１開示された情報処理装置は、メモリバンク幅内の複数の要素データにアクセスするベクトルロード命令に対して、要素データ毎のメモリアクセスリクエストを生成することなく、メモリバンク単位で圧縮されたメモリアクセスリクエストを生成する。これにより、プロセッサ内での処理量を削減することができる。
【０００４】
特許文献２に開示されたベクトルロード処理方式では、複素数データに対するベクトルロード命令において、実部のデータと虚部のデータとを異なるロードバッファに格納して、同時に処理する。こうすることで、主記憶読み出しリクエストを効率的に処理することができる。
【０００５】
特許文献３に開示されたベクトル処理装置は、複素数データにおける実部データと虚部データとを連続データに整列し、１つのベクトルロード命令又はベクトルストア命令で実部データと虚部データとを扱う。これにより、複素数データの処理を高速化することができる。
【０００６】
特許文献４には、同一のメモリバンクで競合する複数のメモリアクセスリクエストを１つに圧縮することによって制御信号数を削減するコンピュータ装置が開示されている。
【０００７】
特許文献５には、同一のアドレスベクトル要素に対する主記憶装置へのデータ読み出しアクセスを圧縮することによって主記憶装置へのアクセス回数を減らすことができるリストベクトル処理システムが開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２１８３５０号公報
【特許文献２】特許３７８６１８２号公報
【特許文献３】特許３９６１４６１号公報
【特許文献４】特開２００７−２４９６５１号公報
【特許文献５】特許２９０８３３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところが、上記特許文献１に開示された情報処理装置では、複数のベクトルロード命令を１つに圧縮することができず、また、アクセスする複数の要素データがメモリバンク幅内でなければならない。上記特許文献２及び３に開示されたベクトルロード処理方式等では、効率的に処理できるのが複素数データに限られる。上記特許文献４又は５に開示されたコンピュータ装置等では、圧縮の対象となるのが、同一のメモリバンクで競合するメモリアクセスリクエスト又は同一のアドレスベクトル要素に対するデータ読み出しアクセスに限られる。
【００１０】
このように上記特許文献１乃至５で開示された情報処理装置等では、圧縮の対象となるメモリアクセス命令に制限があり、メモリ帯域の利用効率の向上が限定的であった。
【００１１】
本発明は、上記実情に鑑みてなされたものであり、メモリ帯域の利用効率をさらに向上させることができるメモリアクセス制御装置、プロセッサ及びメモリアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明の第１の観点に係るメモリアクセス制御装置は、
複数の要素データ各々をアドレスに対応付けて格納するメモリと、
前記メモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度と保持するメモリアクセス命令の数に関する情報とが対応付けられたテーブルを参照し、保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備える。
【００１３】
また、本発明の第２の観点に係るプロセッサは、
複数のメモリアクセス制御装置を備えるプロセッサであって、
前記メモリアクセス制御装置各々は、
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度と保持するメモリアクセス命令の数に関する情報とが対応付けられたテーブルを参照し、保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備える。
【００１４】
また、本発明の第３の観点に係るメモリアクセス制御方法は、
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行工程と、
前記メモリに対するアクセスの混雑度を監視する監視工程と、
前記命令発行工程において発行された複数のメモリアクセス命令を保持して、前記監視工程で監視された混雑度と保持するメモリアクセス命令の数に関する情報とが対応付けられたテーブルを参照し、保持するメモリアクセス命令の数を増減させる保持工程と、
前記保持工程で保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成工程と、
前記生成工程で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理工程と、
を含む。
また、本発明の第４の観点に係るメモリアクセス制御装置は、
複数の要素データ各々をアドレスに対応付けて格納するメモリと、
前記メモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記命令発行部によって発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する命令検出部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、前記命令検出部で検出されたメモリアクセス命令であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ベースアドレスの差が前記メモリのバンクのサイズ内であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、前記複数のメモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲がある複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備える。
また、本発明の第５の観点に係るプロセッサは、
複数のメモリアクセス制御装置を備えるプロセッサであって、
前記メモリアクセス制御装置各々は、
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記命令発行部によって発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する命令検出部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、前記命令検出部で検出されたメモリアクセス命令であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ベースアドレスの差が前記メモリのバンクのサイズ内であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、前記複数のメモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲がある複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備える。
また、本発明の第６の観点に係るメモリアクセス制御方法は、
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行工程と、
前記命令発行工程において発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する命令検出工程と、
前記メモリに対するアクセスの混雑度を監視する監視工程と、
前記命令発行工程において発行された複数のメモリアクセス命令を保持して、前記監視工程で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持工程と、
前記保持工程で保持された前記メモリアクセス命令のうち、前記命令検出工程で検出されたメモリアクセス命令であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ベースアドレスの差が前記メモリのバンクのサイズ内であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、前記複数のメモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲がある複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成工程と、
前記生成工程で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理工程と、
を含む。
【発明の効果】
【００１５】
本発明によれば、メモリに対するアクセスの混雑度に応じて保持されたメモリアクセス命令が所定の条件を満たす場合に圧縮される。これにより、メモリに対するアクセスの回数を減らすことができるので、メモリ帯域の利用効率をさらに向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態１に係るメモリアクセス制御装置の構成を示すブロック図である。
【図２】ベクトルロード命令のフォーマットを示す図である。
【図３】保持部に記憶されるテーブルの例を示す図である。
【図４】実施形態１に係るベクトルロード命令に関する図である。
【図５】実施形態１に係る圧縮されたアクセスリクエストのフォーマットを示す図である。
【図６】実施形態１に係るアクセスリクエストの生成処理のタイミングチャートである。
【図７】実施形態２に係るメモリアクセス命令に関する図である。
【図８】実施形態２に係るアクセスリクエストの生成処理のタイミングチャートである。
【図９】実施形態２に係る圧縮されたアクセスリクエストのフォーマットを示す図である。
【図１０】実施形態３に係る圧縮されたアクセスリクエストのフォーマットを示す図である。
【図１１】実施形態４に係る圧縮されたアクセスリクエストのフォーマットを示す図である。
【図１２】実施形態５に係る圧縮されたアクセスリクエストのフォーマットを示す図である。
【発明を実施するための形態】
【００１７】
本発明の実施形態について、図面を参照して詳細に説明する。
【００１８】
（実施形態１）
図１は、本実施形態に係るメモリアクセス制御装置１００の構成を示す。メモリアクセス制御装置１００は、メモリ１０及びＣＰＵ２０を備える。
【００１９】
メモリ１０は、ＲＡＭ１１、ＲＡＭ１２を備える。ＲＡＭ１１は、複数の要素データ各々をアドレスに対応付けて格納する。ＲＡＭ１１には、６４バイト毎にバンクが設けられており、０バイトから６３バイトをバンク０、６４バイトから１２７バイトをバンク１とする。ＲＡＭ１２は、ＲＡＭ１１と同じであるため、説明を省略する。
【００２０】
ＣＰＵ２０は、自身が発行するメモリアクセス命令に基づいて、ＲＡＭ１１、１２に格納された各要素データにアクセスする。
【００２１】
メモリアクセス命令には、ベクトルロード命令及びベクトルストア命令が含まれる。ベクトルロード命令は、ＲＡＭ１１、１２に格納された複数の要素データを読み出す命令である。本実施形態では、ベクトルロード命令は、指定されたアドレスから８バイトの要素データを読み出すものとする。ベクトルストア命令は、ＲＡＭ１１、１２に複数の要素データを格納する命令である。
【００２２】
例えば、図２に示すように、ベクトルロード命令のフォーマットでは、オペレーションコードとして「ＶＬＤ」が定義される。ベクトルロード命令のフォーマットは、３オペランド形式である。ベクトルロード命令のフォーマットでは、Ｘフィールドにディスティネーションレジスタ、Ｙフィールドにベースアドレス、Ｚフィールドにディスタンスが定義される。
【００２３】
ベクトルロード命令は、ＲＡＭ１１、１２に格納された要素データの内、ベースアドレスで指定されたアドレスに対応する要素データからディスタンスで指定されたアドレス間隔で複数の要素データを１命令で読み出す。１命令で処理する要素数は、ベクトル長としてＣＰＵ２０内のベクトル長設定レジスタ（不図示）に設定される。本実施形態では、ベクトル長設定レジスタの値は、０〜２５６をとるものとする。
【００２４】
図１に戻り、ＣＰＵ２０は、メモリ制御部２１０と、メモリ制御部２２０と、ネットワーク部２３０と、コア３００と、コア４００とを備える。
【００２５】
メモリ制御部２１０、２２０は、メモリアクセス命令に基づいて生成されたアクセスリクエストをＲＡＭ１１、１２に出力する。メモリ制御部２１０、２２０は、アクセスリクエストに対してＲＡＭ１１、１２によって入力されたデータをネットワーク部２３０に出力する。
【００２６】
ネットワーク部２３０は、コア３００、４００によって入力されたアクセスリクエストをメモリ制御部２１０、２２０に出力する。ネットワーク部２３０は、監視部２３１を備える。監視部２３１は、ＲＡＭ１１、１２に対するアクセスの混雑度を監視する。例えば、監視部２３１は、混雑度として、ＲＡＭ１１、１２に対する仕掛かり中のアクセスリクエスト数を監視する。監視部２３１は、混雑度をコア３００、４００に出力する。
【００２７】
コア３００は、スカラ処理部３１０と、アドレス制御部３２０と、ベクトル処理部３３０とを備える。コア４００は、スカラ処理部４１０と、アドレス制御部４２０と、ベクトル処理部４３０とを備える。コア４００は、コア３００と同じであるため、以下ではコア３００について詳細に説明する。
【００２８】
スカラ処理部３１０は、プログラムの命令をその実行順にデコードしてメモリアクセス命令を発行する。スカラ処理部３１０は、命令発行部３１１を備える。命令発行部３１１は、ＲＡＭ１１、１２に格納された複数の要素データにアクセスするメモリアクセス命令を発行する。命令発行部３１１から発行されたメモリアクセス命令は、アドレス制御部３２０及びベクトル処理部３３０に出力される。
【００２９】
アドレス制御部３２０は、命令検出部３２１と、圧縮制御部３２２と、出力制御部３２３とを備える。
【００３０】
命令検出部３２１は、命令発行部３１１によって発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する。
【００３１】
これにより、圧縮されるメモリアクセス命令の候補が検出される。「アドレスが依存しない」とは、複数のメモリアクセス命令間でアクセスするアドレスが重複しないことをいう。命令検出部３２１が、先行する未処理のメモリアクセス命令との間でアクセスするアドレスが依存しないメモリアクセス命令を検出するのは、例えば、メモリアクセス命令が圧縮された結果、先行するベクトルストア命令Ａを追い越した後続のベクトルロード命令Ｂによって要素データが読み出されると、読み出された要素データは、ベクトルストア命令Ａで格納されるはずだった要素データと異なり問題となるからである。
【００３２】
命令検出部３２１は、メモリアクセス命令を圧縮制御部３２２に出力する。命令検出部３２１により検出されたメモリアクセス命令を圧縮制御部３２２に出力する場合は、命令検出部３２１は、当該メモリアクセス命令と、当該メモリアクセス命令が圧縮の候補であることを示す圧縮候補フラグとを出力する。
【００３３】
圧縮制御部３２２は、保持部３２４と、生成部３２５とを備える。保持部３２４は、命令発行部３１１によって発行された複数のメモリアクセス命令を保持して、監視部２３１で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる。
【００３４】
例えば、保持部３２４は、仕掛かり中のアクセスリクエスト数に対応するクロック数だけメモリアクセス命令を保持する。保持部３２４は、図３に示すように、仕掛かり中のアクセスリクエスト数と待ち合わせるクロック数とが対応付けられたテーブルを記憶する。保持部３２４は、当該テーブルを参照して、監視部２３１から出力された仕掛かり中のアクセスリクエスト数に対応するクロック数を取得する。
【００３５】
例えば、監視部２３１から出力された仕掛かり中のアクセスリクエスト数が「４」の場合、待ち合わせるクロック数は「８」なので、保持部３２４は、８クロック経過するまで発行されたメモリアクセス命令を保持する。
【００３６】
なお、保持部３２４は、仕掛かり中のアクセスリクエスト数に対応する数の後続のメモリアクセス命令を保持するようにしてもよい。例えば、仕掛かり中のアクセスリクエスト数が１〜３の場合には、保持部３２４は、後続の１つのメモリアクセス命令を待ち合わせ、仕掛かり中のアクセスリクエスト数が４〜７の場合には、後続の２つのメモリアクセス命令を待ち合わせるようにしてもよい。
【００３７】
生成部３２５は、保持部３２４に保持されたメモリアクセス命令のうち、所定の条件としての圧縮条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する。所定の条件としての圧縮条件は、命令検出部３２１で検出されたメモリアクセス命令であって、各メモリアクセス命令のフォーマットに含まれる各ベースアドレスの差がＲＡＭ１１のバンクのサイズ内であって、各メモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、各メモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲があることである。
【００３８】
より具体的には、生成部３２５は、命令検出部３２１から圧縮候補フラグとともに出力された複数のメモリアクセス命令が、上記各メモリアクセス命令のフォーマットに含まれるベースアドレス、ディスタンス、ベクトル長に関する条件を満たすか否かを判定する。生成部３２５は、各メモリアクセス命令が圧縮条件を満たす場合に各メモリアクセス命令を圧縮する。
【００３９】
より具体的に、図４に示す２つの異なるベクトルロード命令を圧縮して１つのアクセスリクエストを生成する場合を説明する。
【００４０】
発行された順序が１番であるベクトルロード命令「ベクトルロードＡ」は、ベースアドレスが「０００」、ディスタンスが「１６バイト」、ベクトル長が「２５６バイト」である。発行された順序が２番であるベクトルロード命令「ベクトルロードＢ」は、ベースアドレスが「００８」、ディスタンスが「１６バイト」、ベクトル長が「２５６バイト」である。ベクトルロード命令Ａがアクセスするアドレスは、「０００〜００７」、「０１６〜０２３」、・・・「２２４〜２３１」、「２４０〜２４７」である。一方、ベクトルロード命令Ｂがアクセスするアドレスは、「００８〜０１５」、「０２４〜０３１」、・・・「２３２〜２３８」、「２４８〜２５５」である。
【００４１】
ベクトルロード命令Ａは、先行する未処理のメモリアクセス命令との間でアドレスの依存がないものとする。よって、ベクトルロード命令Ａは、アドレス依存が「無し」となる。ベクトルロード命令Ｂは、先行する未処理のベクトルロード命令Ａとの間でアドレスの依存ないため、アドレス依存が「無し」である。ベースアドレス、ディスタンス、ベクトル長に関する条件について検討すると、ベースアドレスの差が８バイトであるため、ＲＡＭ１１のバンクのサイズ「６４バイト」以内であって、ディスタンスはともに「１６バイト」で一致しており、ベクトル長はともに「２５６バイト」で一致する範囲がある。このため、ベクトルロード命令Ｂは、ベクトルロード命令Ａと圧縮可能である。
【００４２】
圧縮されたアクセスリクエストのフォーマットについて、図５を参照して説明する。図５には、アクセスリクエストのフォーマットにおける先頭の１２８バイトまでが例示されている。本実施形態では、ベクトルロード命令は、指定されたアドレスから８バイトの要素データを読み出すため、アドレス８バイト毎にゾーンが割り当てられている。アドレス「０００〜００７」、「００８〜０１５」、「０１６〜０２３」、「０２４〜０３１」、「０３２〜０３９」、「０４０〜０４７」、「０４８〜０５５」、「０５６〜０６３」各々には、バンク内での位置を示すゾーン番号「０」、「１」、「２」、「３」、「４」、「５」、「６」、「７」が割り当てられている。ゾーン有効バイトは、リプライデータを要求するか否かを示す。リプライデータを要求するゾーンに対応するゾーン有効バイトは、「１」であって、リプライデータを要求しないゾーンに対応するゾーン有効バイトは、「０」である。
【００４３】
例えば、図４で例示したベクトルロード命令Ａは、ベースアドレスが「０００」であって、ディスタンスが「１６バイト」であって、ベクトル長が「２５６バイト」であるため、バンク０乃至３各々のゾーン番号「０、２、４、６」に対応するゾーン有効ビットが「１」である。ベクトルロード命令Ｂは、ベースアドレスが「００８」であって、ディスタンスが「１６バイト」であって、ベクトル長が「２５６バイト」であるため、バンク０乃至３各々のゾーン番号「１、３、５、７」に対応するゾーン有効ビットが「１」である。
【００４４】
ベクトルロード命令Ａとベクトルロード命令Ｂとが圧縮されたアクセスリクエストは、バンク０乃至３各々のゾーン番号「０、１、２、３、４、５、６、７」に対応するゾーン有効ビットが「１」となる。
【００４５】
ＲＡＭ１１、１２へのアクセスはバンク単位で行われるため、ベクトルロード命令Ａ、Ｂが圧縮されない場合は、先頭のアドレスが８バイトずれた飛びアクセスを要求するアクセスリクエストが２回発行され、同じバンクに対して２回のアクセスが行われる。一方、ベクトルロード命令Ａ、Ｂが圧縮された場合は、連続アクセスを要求するアクセスリクエストが１回で済むのでアクセスリクエスト数が半分に削減される。
【００４６】
生成部３２５は、生成したアクセスリクエスト、ベースアドレス、ディスタンス、ベクトル長を出力制御部３２３に出力するとともに、生成部３２５は、複数のメモリアクセス命令各々がアクセスするアドレスをベクトル処理部３３０に出力する。より具体的には、生成部３２５は、ベクトルロード命令Ａがアクセスするゾーンの有効ビットが「１」である各バンクのゾーン番号「０、２、４、６」及びベクトルロード命令Ｂがアクセスするゾーンの有効ビットが「１」である各バンクのゾーン番号「１、３、５、７」をベクトル処理部３３０に出力する。
【００４７】
先行する未処理のメモリアクセス命令との間でアドレスの依存があるメモリアクセス命令及び圧縮条件を満たさないメモリアクセス命令については、生成部３２５は、当該メモリアクセス命令を圧縮することなく、当該メモリアクセス命令に基づいてアクセスリクエストを生成し、先のアクセスリクエストが処理されてからアクセスリクエストを出力制御部３２３に出力する。これとともに、生成部３２５は、メモリアクセス命令を圧縮しないことをベクトル処理部３３０に通知する。
【００４８】
なお、生成部３２５によって圧縮された個々のメモリアクセス命令に基づくアクセスリクエストは生成されない。
【００４９】
出力制御部３２３は、生成部３２５により入力されたアクセスリクエスト、ベースアドレス、ディスタンス、ベクトル長に基づいてバンクのサイズ毎のアクセスリクエストに分解後、ネットワーク部２３０にアクセスリクエストを出力する。
【００５０】
ベクトル処理部３３０は、リプライデータ処理部３３１を備える。リプライデータ処理部３３１は、生成部３２５で生成されたアクセスリクエストに対するリプライデータを、圧縮前の複数のメモリアクセス命令各々のリプライデータに分解する。より具体的には、リプライデータ処理部３３１は、ネットワーク部２３０からリプライデータを受け付けると、生成部３２５から出力されたゾーン番号に基づいて、リプライデータを圧縮前のベクトルロード命令Ａ、Ｂ各々のリプライデータに分解する。分解されたリプライデータに基づいて、コア３００はベクトルロード命令Ａ、Ｂ各々によって読み出す要素データを取得できる。
【００５１】
次に、図４に示すベクトルロード命令Ａ、Ｂを例に用いて、図６を参照しながらアクセスリクエストの生成処理を詳細に説明する。前提として、監視部２３１から出力される仕掛かり中のアクセスリクエスト数は４とする。また、ベクトルロード命令Ａが発行されてから、４クロック後にベクトルロード命令Ｂが発行されるものとする。
【００５２】
クロックｔ（ｎ）において、命令発行部３１１は、ベクトルロード命令Ａをアドレス制御部３２０に発行する。命令検出部３２１は、先行する未処理のメモリアクセス命令との間でアドレスが依存しないメモリアクセス命令としてベクトルロード命令Ａを検出する。命令検出部３２１は、圧縮候補フラグとともにベクトルロード命令Ａを圧縮制御部３２２に出力する。
【００５３】
保持部３２４は、テーブルを参照して、監視部２３１から出力された仕掛かり中のアクセスリクエスト数「４」に対応する待ち合わせるクロック数「８」を取得する。
【００５４】
保持部３２４は、８クロック経過するまでベクトルロード命令Ａを保持する。
【００５５】
クロックｔ（ｎ＋４）になると、命令発行部３１１は、ベクトルロード命令Ｂをアドレス制御部３２０に発行する。命令検出部３２１は、先行する未処理のベクトルロード命令Ａとの間でアドレスが依存しないメモリアクセス命令としてベクトルロード命令Ｂを検出する。命令検出部３２１は、圧縮候補フラグとともにベクトルロード命令Ｂを圧縮制御部３２２に出力する。
【００５６】
保持部３２４は、ベクトルロード命令Ａを保持してから８クロック経過するまでベクトルロード命令Ｂを保持する。
【００５７】
クロックｔ（ｎ＋８）になると、ベクトルロード命令Ａを保持してから８クロックが経過したため、生成部３２５は、圧縮候補フラグとともに出力されたベクトルロード命令Ａ、Ｂが圧縮可能か否かを判定する。上記で検討したように、ベクトルロード命令Ａ、Ｂは圧縮可能と判定される。生成部３２５は、ベクトルロード命令Ａ、Ｂを圧縮してアクセスリクエストを生成する。生成部３２５は、生成したアクセスリクエスト等を出力制御部３２３に出力するとともに、ベクトルロード命令Ａ、Ｂがアクセスするゾーン番号をベクトル処理部３３０に出力する。
【００５８】
出力制御部３２３は、アクセスリクエスト等に基づいてバンクのサイズ毎のアクセスリクエストに分解後、ネットワーク部２３０にアクセスリクエストを出力する。リプライデータ処理部３３１は、ネットワーク部２３０を介してリプライデータを受け付けると、生成部３２５から出力されたゾーン番号に基づいて、リプライデータを圧縮前のベクトルロード命令Ａ、Ｂ各々のリプライデータに分解する。分解されたリプライデータに基づいて、コア３００はベクトルロード命令Ａ、Ｂ各々によって読み出す要素データを取得できる。
【００５９】
（実施形態２）
本実施形態２では、図７に示すような８つのメモリアクセス命令（６つのベクトルロード命令及び２つのベクトルストア命令）が命令発行部３１１によって発行された場合を説明する。ベクトルロード命令Ａ、Ｂ、Ｃ、Ｅ、Ｆ、Ｇは、ベースアドレスがそれぞれ「０００」、「００８」、「０１６」、「０２４」、「０３２」、「０４０」であって、ディスタンスが「６４バイト」、ベクトル長が「２５６バイト」である。ベクトルストア命令Ｄ、Ｈは、ベースアドレスがそれぞれ「４００００」、「４０００８」であって、ディスタンスが「１６バイト」、ベクトル長が「２５６バイト」である。発行される順序は、ベクトルロード命令Ａ、Ｂ、Ｃ、ベクトルストア命令Ｄ、ベクトルロード命令Ｅ、Ｆ、Ｇ、ベクトルストア命令Ｈである。
【００６０】
ベクトルロード命令Ａは、先行する未処理のメモリアクセス命令との間でアドレスの依存がないものとする。よって、ベクトルロード命令Ａは、アドレス依存が「無し」となる。ベクトルロード命令Ｂは、先行する未処理のベクトルロード命令Ａとの間でアドレスの依存がないため、アドレス依存が「無し」である。ベクトルロード命令Ｃは、先行する未処理のベクトルロード命令Ａ、Ｂとの間でアドレスの依存がないため、アドレス依存が「無し」である。
【００６１】
ベクトルストア命令Ｄは、アクセスするアドレスが「４０００」以降であるのに対し、ベクトルロード命令Ａ、Ｂ、Ｃ各々がアクセスするアドレスは「０００〜００７」、「００８〜０１５」、「０１６〜０２３」であるので、ベクトルストア命令Ｄは、先行する未処理のベクトルロード命令Ａ、Ｂ、Ｃとの間でアドレスの依存がない。このため、ベクトルストア命令Ｄは、アドレス依存が「無し」である。以下同様に、ベクトルロード命令Ｅ、Ｆ、Ｇ、Ｈは、先行する未処理のメモリアクセス命令との間でアドレスの依存がないため、アドレス依存が「無し」である。
【００６２】
ベースアドレス、ディスタンス、ベクトル長に関する条件について検討すると、ベクトルロード命令Ａ、Ｂ、Ｃ、Ｅ、Ｆ、Ｇについては、ベースアドレスの差がＲＡＭ１１のバンクのサイズ内である。また、ディスタンスはいずれも６４バイトで一致する。また、ベクトル長がどちらも２５６バイトであって、一致する範囲がある。以上より、ベクトルロード命令Ｂ、Ｃ、Ｅ、Ｆ、Ｇはベクトルロード命令Ａと圧縮可能である。ベクトルストア命令Ｄ、Ｈは、ベクトルロード命令Ａ、Ｂ、Ｃ、Ｅ、Ｆ、Ｇとのベースアドレスの差がＲＡＭ１１のバンクのサイズ内でないので、圧縮できない。以上より、ベクトルロード命令Ｅ、Ｆ、Ｇは、ベクトルストア命令Ｄを追い越して、ベクトルロード命令Ａ、Ｂ、Ｃと圧縮されてもよい。
【００６３】
図７に示すベクトルロード命令Ａ、Ｂ、Ｃ、ベクトルストア命令Ｄ、ベクトルロード命令Ｅ、Ｆ、Ｇ、ベクトルストア命令Ｈを例に用いて、図８を参照しながらアクセスリクエストの生成処理を詳細に説明する。前提として、監視部２３１から出力される仕掛かり中のアクセスリクエスト数は２４とする。また、ベクトルロード命令Ａが発行されてから、４クロック毎に順次７つのメモリアクセス命令が発行されるものとする。
【００６４】
クロックｔ（ｎ）において、命令発行部３１１は、ベクトルロード命令Ａをアドレス制御部３２０に発行する。命令検出部３２１は、ベクトルロード命令Ａを圧縮候補フラグとともに圧縮制御部３２２に出力する。
【００６５】
保持部３２４は、テーブルを参照して、監視部２３１から出力された仕掛かり中のアクセスリクエスト数「２４」に対応する待ち合わせるクロック数「４８」を取得する。
【００６６】
保持部３２４は、４８クロック経過するまでベクトルロード命令Ａを保持する。
【００６７】
以後、保持部３２４は、ベクトルロード命令Ａを保持してから４８クロック経過するまで、クロックｔ（ｎ＋４）、ｔ（ｎ＋８）・・・ｔ（ｎ＋２８）に発行されるベクトルロード命令Ｂ、Ｃ、ベクトルストア命令Ｄ、ベクトルロード命令Ｅ、Ｆ、Ｇ、ベクトルストア命令Ｈを保持する。
【００６８】
クロックｔ（ｎ＋４８）になると、ベクトルロード命令Ａを保持してから４８クロックが経過したため、生成部３２５は、圧縮候補フラグとともに出力されたベクトルロード命令Ａ、Ｂ、Ｃ、ベクトルストア命令Ｄ、ベクトルロード命令Ｅ、Ｆ、Ｇ、ベクトルストア命令Ｈが圧縮可能か否かを判定する。上記で検討したように、ベクトルロード命令Ｂ、Ｃ、Ｅ、Ｆ、Ｇはベクトルロード命令Ａと圧縮可能であると判定される。図９に示すように、生成部３２５は、ベクトルロード命令Ａ、Ｂ、Ｃ、Ｅ、Ｆ、Ｇを圧縮してアクセスリクエストを生成する。生成部３２５は、生成したアクセスリクエスト等を出力制御部３２３に出力する。これとともに、生成部３２５は、ベクトルロード命令Ａ、Ｂ、Ｃ、Ｅ、Ｆ、Ｇ各々がアクセスするゾーンの有効ビットが「１」である各バンクのゾーン番号「０」、「１」、「２」、「３」、「４」、「５」をベクトル処理部３３０に出力する。
【００６９】
ｔ（ｎ＋４９）、ｔ（ｎ＋５０）の各クロックでは、生成部３２５は、圧縮できないと判定されたベクトルストア命令Ｄ、Ｈに基づいてアクセスリクエストを生成し、各アクセスリクエストを出力制御部３２３に出力する。これとともに、生成部３２５は、ベクトルロード命令等を圧縮しないことをベクトル処理部３３０に通知する。
【００７０】
ベクトルロード命令Ａ、Ｂ、Ｃ、Ｅ、Ｆ、Ｇが圧縮されない場合は、先頭のアドレスが８バイトずれた飛びアクセスを要求するアクセスリクエストが６回発行され、同じバンクに対して６回のアクセスが行われる。しかし、６つのベクトルロード命令が圧縮された場合は、連続アクセスを要求するアクセスリクエストが１回で済むのでアクセスリクエスト数が１／６に削減される。
【００７１】
（実施形態３）
図１０は、上記実施形態１のアクセスリクエストの生成処理によって、８つのベクトルロード命令Ａ乃至Ｈを圧縮したアクセスリクエストを示す。ベクトルロード命令Ａ乃至Ｈの各ベースアドレスは、「０００」、「００８」、「０１６」、「０２４」、「０３２」、「０４０」、「０４８」、「０５６」であって、各ディスタンスは「６４バイト」、各ベクトル長は「２５６バイト」である。
【００７２】
８つのベクトルロード命令が圧縮されない場合は、先頭のアドレスが８バイトずれた飛びアクセスを要求するアクセスリクエストが８回発行され、同じバンクに対して８回のアクセスが行われる。一方、８つのベクトルロード命令が圧縮された場合は、連続アクセスを要求するアクセスリクエストが１回で済むのでアクセスリクエスト数が１／８に削減される。
【００７３】
（実施形態４）
図１１は、上記実施形態１のアクセスリクエストの生成処理によって、２つのベクトルロード命令Ａ、Ｂを圧縮したアクセスリクエストを示す。ベクトルロード命令Ａ、Ｂの各ベースアドレスは、「０００」、「０３２」であって、各ディスタンスは「６４バイト」、各ベクトル長は「２５６バイト」である。
【００７４】
このように、２つのベクトルロード命令Ａ、Ｂが圧縮されたアクセスリクエストが連続アクセスにならなくても、アクセスするアドレスが同一バンク内であれば自由に圧縮することができる。
【００７５】
（実施形態５）
本実施形態では、２つのベクトルロード命令のベクトル長が完全に一致しない場合のアクセスリクエストの生成処理を説明する。図１２は、上記実施形態１のアクセスリクエストの生成処理によって、２つのベクトルロード命令Ａ、Ｂを圧縮したアクセスリクエストを示す。ベクトルロード命令Ａのベースアドレスは、「０００」であって、ディスタンスは「１６バイト」、ベクトル長は「６４バイト」である。ベクトルロード命令Ｂのベースアドレスは、「００８」であって、ディスタンスは「１６バイト」、ベクトル長は「２５６バイト」である。この場合、生成部３２５は、ベクトルロード命令Ａ、Ｂのバンク０内のアドレスにアクセスするベクトルロード命令を圧縮して、アクセスリクエストを生成する。生成部３２５は、圧縮されなかったベクトルロード命令Ｂのバンク１内のアドレスにアクセスするベクトルロード命令については、圧縮せずに、別のアクセスリクエストとして生成する。
【００７６】
このようにすることで、ベクトル長が完全に一致しないベクトルロード命令でも圧縮することが可能であり、バンク０に対するアクセスリクエストは１回で済むのでアクセスリクエスト数が削減される。
【００７７】
以上詳細に説明したように、上記各実施形態によれば、ＲＡＭ１１、１２に対するアクセスの混雑度に応じて保持されたメモリアクセス命令が所定の条件を満たす場合に圧縮される。これにより、ＲＡＭ１１、１２に対するアクセスの回数を減らすことができるので、メモリ帯域の利用効率をさらに向上させることができる。
【００７８】
また、上記各実施形態によれば、監視部２３１は、ＲＡＭ１１、１２に対する仕掛かり中のアクセスリクエスト数を監視するようにした。これによりアクセスリクエスト数が０の場合は、生成部３２５は、圧縮せずに個々のベクトルロード命令に基づくアクセスリクエストを生成する。アクセスリクエスト数が少ない場合は、生成部３２５は、少ない数のベクトルロード命令を圧縮してアクセスリクエストを生成する。このため、多数のアクセスが集中してメモリ帯域が混雑していないときに、後続するベクトルロード命令を必要以上に待ち合わせることによるメモリアクセスレイテンシンの増加を防ぐことができる。
【００７９】
また、ベクトルロード命令をバンク毎のアクセスリクエストに分解してから圧縮するか否かを判定する場合、例えば、ベクトル長が２５６バイトのときに、ディスタンスにもよるが、最大で２５６のアクセスリクエストになるため、これらアクセスリクエストを圧縮するか否か判定するには、巨大なバッファと大量のデータ処理が必要となる。しかし、上記各実施形態によれば、ベクトルロード命令をバンク毎のアクセスリクエストに分解することなくベクトルロード命令を圧縮するか否かが判定されるため、少ない処理工程で多数のベクトルロード命令を圧縮対象とすることができる。
【００８０】
また、上記各実施形態によれば、アクセスリクエスト数を減らすことによって、メモリアクセス制御装置１の消費電力も削減できる。
【００８１】
なお、上記実施形態では、監視部２３１は、ＲＡＭ１１、１２に対するアクセスの混雑度を監視するために、混雑度として、仕掛かり中のアクセスリクエスト数を監視することとしたが、コア３００、４００から出力されるアクセスリクエスト数の合計を監視してもよいし、コア３００、４００各々から出力されるアクセスリクエスト数を個別に監視してもよい。また、上記実施形態では、ネットワーク部２３０が監視部２３１を備えるようにしたが、メモリ制御部２１０、２２０が監視部２３１を備えるようにしてもよい。
【００８２】
また、監視部２３１は、メモリ制御部２１０、２２０における仕掛かり中のアクセスリクエスト数を別個に監視して、圧縮制御部３２２、４２２に通知し、メモリアクセス命令がアクセスするアドレス毎に待ち合わせるクロック数を設定してもよい。
【００８３】
なお、ベクトル処理部３３０が監視部２３１を備え、監視部２３１は、混雑度として、アクセスリクエストが生成部３２５で生成されてからリプライデータを受け付けるまでの時間を監視してもよい。より詳細には、監視部２３１は、出力制御部３２３がアクセスリクエストを出力してから、そのアクセスリクエストに対するリプライデータをベクトル処理部３３０が受け付けるまでの時間を監視する。例えば、監視部２３１は、アクセスリクエストが出力されてからリプライデータを受け付けるまでの時間の理論値と実際の時間とを比較する。この場合、実際の時間が理論値の時間よりも遅くなればなるほど混雑度が高くなる。
【００８４】
なお、上記各実施形態では、ベクトルロード命令を圧縮する場合を説明したが、ベクトルストア命令を圧縮してもよい。また、上記実施形態では、コア３００におけるアクセスリクエストの生成処理を説明したが、コア４００も同じくアクセスリクエストの生成処理が可能である。
【００８５】
なお、コア３００、４００は、１つであっても、３つ以上であってもよい。また、メモリ制御部２１０、２２０は、１つであっても、３つ以上であってもよい。また、ＲＡＭ１１、１２は、１つであっても、３つ以上であってもよい。
【００８６】
なお、本実施形態では、ベクトルロード命令は、指定されたアドレスから８バイトの要素データを読み出すものとしたが、指定されたアドレスから４バイトの要素データを読み出すようにしてもよい。
【００８７】
なお、本発明は、上記実施形態及び図面によって限定されるものではない。本発明の要旨を変更しない範囲で実施形態及び図面に変更を加えることができるのはもちろんである。
【００８８】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００８９】
（付記１）
複数の要素データ各々をアドレスに対応付けて格納するメモリと、
前記メモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備えるメモリアクセス制御装置。
【００９０】
（付記２）
前記監視部は、
前記混雑度として、仕掛かり中のアクセスリクエスト数、又は前記アクセスリクエストが前記生成部で生成されてからリプライデータを受け付けるまでの時間を監視し、
前記保持部は、
仕掛かり中のアクセスリクエスト数に対応するクロック数、又はアクセスリクエストが前記生成部で生成されてからリプライデータを受け付けるまでの時間に対応するクロック数だけメモリアクセス命令を保持する、
ことを特徴とする付記１に記載のメモリアクセス制御装置。
【００９１】
（付記３）
前記保持部は、
仕掛かり中のアクセスリクエスト数に対応する数の後続のメモリアクセス命令を保持する、
ことを特徴とする付記２に記載のメモリアクセス制御装置。
【００９２】
（付記４）
前記命令発行部によって発行されたメモリアクセス命令の中から、先行する未処理のメモリアクセス命令との間で、アクセスするアドレスが依存しないメモリアクセス命令を検出する命令検出部とをさらに備え、
前記所定の条件は、
前記命令検出部で検出されたメモリアクセス命令であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ベースアドレスの差が前記メモリのバンクのサイズ内であって、前記複数のメモリアクセス命令のフォーマットに含まれる各ディスタンスが一致し、前記複数のメモリアクセス命令のフォーマットに含まれる各ベクトル長に一致する範囲がある、
ことを特徴とする付記１乃至３のいずれかに記載のメモリアクセス制御装置。
【００９３】
（付記５）
前記メモリアクセス命令は、
前記メモリに格納された複数の要素データを読み出すベクトルロード命令及び前記メモリに複数の要素データを格納するベクトルストア命令を含むメモリアクセス命令を含む、
ことを特徴とする付記１乃至４のいずれかに記載のメモリアクセス制御装置。
【００９４】
（付記６）
複数のメモリアクセス制御装置を備えるプロセッサであって、
前記メモリアクセス制御装置各々は、
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行部と、
前記メモリに対するアクセスの混雑度を監視する監視部と、
前記命令発行部によって発行された複数のメモリアクセス命令を保持して、前記監視部で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持部と、
前記保持部に保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成部と、
前記生成部で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理部と、
を備えることを特徴とするプロセッサ。
【００９５】
（付記７）
複数の要素データ各々をアドレスに対応付けて格納するメモリに格納された前記複数の要素データにアクセスするメモリアクセス命令を発行する命令発行工程と、
前記メモリに対するアクセスの混雑度を監視する監視工程と、
前記命令発行工程において発行された複数のメモリアクセス命令を保持して、前記監視工程で監視された混雑度に応じて保持するメモリアクセス命令の数を増減させる保持工程と、
前記保持工程で保持された前記メモリアクセス命令のうち、所定の条件を満たす複数のメモリアクセス命令を圧縮してアクセスリクエストを生成する生成工程と、
前記生成工程で生成された前記アクセスリクエストに対するリプライデータを、圧縮前の前記複数のメモリアクセス命令各々のリプライデータに分解するリプライデータ処理工程と、
を含むメモリアクセス制御方法。
【符号の説明】
【００９６】
１０  メモリ
１１、１２  ＲＡＭ
２０  ＣＰＵ
１００  メモリアクセス制御装置
２１０、２２０  メモリ制御部
２３０  ネットワーク部
２３１  監視部
３００、４００  コア
３１０、４１０  スカラ処理部
３１１、４１１  命令発行部
３２０、４２０  アドレス制御部
３２１、４２１  命令検出部
３２２、４２２  圧縮制御部
３２３、４２３  出力制御部
３２４、４２４  保持部
３２５、４２５  生成部
３３０、４３０  ベクトル処理部
３３１、４３１  リプライデータ処理部
【図１】
0005668554.tif 000002
【図２】
0005668554.tif 000003
【図３】
0005668554.tif 000004
【図４】
0005668554.tif 000005
【図５】
0005668554.tif 000006
【図６】
0005668554.tif 000007
【図７】
0005668554.tif 000008
【図８】
0005668554.tif 000009
【図９】
0005668554.tif 000010
【図１０】
0005668554.tif 000011
【図１１】
0005668554.tif 000012
【図１２】
0005668554.tif 000013