JP2003030129A - データバッファ - Google Patents
データバッファInfo
- Publication number
- JP2003030129A JP2003030129A JP2001211710A JP2001211710A JP2003030129A JP 2003030129 A JP2003030129 A JP 2003030129A JP 2001211710 A JP2001211710 A JP 2001211710A JP 2001211710 A JP2001211710 A JP 2001211710A JP 2003030129 A JP2003030129 A JP 2003030129A
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- block
- register
- size
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
Abstract
(57)【要約】
【課題】 数バイト単位でデータを処理するソフトウェ
アプログラムから、十数バイトのブロック単位でのデー
タ転送に最適化されたメモリやコプロセッサへのデータ
転送の効率を高め、以てシステム性能を向上させる。 【解決手段】 転送先アドレスを初期アドレスとして保
持するための初期アドレスレジスタ13を設け、ユニー
クなアドレスが割り当てられた入力データレジスタ11
へのデータ書き込みにより、書き込まれたデータを予め
設定された転送先データサイズのデータブロックにまと
める。
アプログラムから、十数バイトのブロック単位でのデー
タ転送に最適化されたメモリやコプロセッサへのデータ
転送の効率を高め、以てシステム性能を向上させる。 【解決手段】 転送先アドレスを初期アドレスとして保
持するための初期アドレスレジスタ13を設け、ユニー
クなアドレスが割り当てられた入力データレジスタ11
へのデータ書き込みにより、書き込まれたデータを予め
設定された転送先データサイズのデータブロックにまと
める。
Description
【0001】
【発明の属する技術分野】本発明は、ブロック単位での
データ転送に最適化されたメモリやコプロセッサへのデ
ータ転送の効率を高める手段を提供するデータバッファ
に関するものである。
データ転送に最適化されたメモリやコプロセッサへのデ
ータ転送の効率を高める手段を提供するデータバッファ
に関するものである。
【0002】
【従来の技術】近年のマイクロプロセッサ等の高性能化
によりデータ転送能力の高いメモリインタフェースが必
要となった。メモリのデータ転送能力を向上させるため
には、そのビット幅を広げる方法とデータ転送レートを
上げる方法とがある。
によりデータ転送能力の高いメモリインタフェースが必
要となった。メモリのデータ転送能力を向上させるため
には、そのビット幅を広げる方法とデータ転送レートを
上げる方法とがある。
【0003】しかしながら、半導体プロセスの微細化に
よりメモリ容量も増大しており、保持するメモリ量を増
やすことなくデータ転送能力を向上させるためには、そ
のビット幅を広げず、むしろ狭めながら転送サイクル時
間を短くする必要がある。
よりメモリ容量も増大しており、保持するメモリ量を増
やすことなくデータ転送能力を向上させるためには、そ
のビット幅を広げず、むしろ狭めながら転送サイクル時
間を短くする必要がある。
【0004】このような背景の中、SDRAMやRDR
AMといった100MHzを超える高速同期転送能力を
持つメモリと、これらのメモリに対応したメモリインタ
フェースとが開発された。これらのメモリは、そのデバ
イス内部で大きなビット幅でデータをアクセスし、デー
タブロック単位でデータをバッファリングし、数クロッ
クから数十クロックの連続したサイクルで出力すること
で高速なデータ転送を可能にしている。したがって、こ
れらのメモリはデータ転送能力(スループット)が高い
が、アドレス入力してから該当するブロックデータの最
初のデータがアクセスできるまでの時間(レイテンシ)
が大きいという特徴がある。したがって、これらの高速
同期転送を行うメモリに対しては、これらのメモリが扱
うブロックより小さいサイズのデータアクセスを頻繁に
行うと、メモリ転送能力を低くし、むしろシステム性能
を低下させるという問題が発生する。
AMといった100MHzを超える高速同期転送能力を
持つメモリと、これらのメモリに対応したメモリインタ
フェースとが開発された。これらのメモリは、そのデバ
イス内部で大きなビット幅でデータをアクセスし、デー
タブロック単位でデータをバッファリングし、数クロッ
クから数十クロックの連続したサイクルで出力すること
で高速なデータ転送を可能にしている。したがって、こ
れらのメモリはデータ転送能力(スループット)が高い
が、アドレス入力してから該当するブロックデータの最
初のデータがアクセスできるまでの時間(レイテンシ)
が大きいという特徴がある。したがって、これらの高速
同期転送を行うメモリに対しては、これらのメモリが扱
うブロックより小さいサイズのデータアクセスを頻繁に
行うと、メモリ転送能力を低くし、むしろシステム性能
を低下させるという問題が発生する。
【0005】この問題を解決するために、SDRAMや
RDRAMのインタフェースはメモリのブロックサイズ
に適したバッファメモリを持っており、連続するデータ
アクセスに対して現在のデータアクセスと次のデータア
クセスとのアドレスが連続する場合には、これらのデー
タアクセスを1つにまとめることによってデータ転送能
力を高める工夫がなされている。ただし、この工夫は、
命令やデータのプリフェッチを伴うアクセスや、DMA
コントローラ等による読み出しや書き込み動作のそれぞ
れが時間的に連続している場合にのみ有効である。一般
的なシステムでは命令フェッチ、データアクセス、DM
Aアクセスが競合し合うため、大規模かつ複雑なインタ
フェースに見合った効果が得られない。
RDRAMのインタフェースはメモリのブロックサイズ
に適したバッファメモリを持っており、連続するデータ
アクセスに対して現在のデータアクセスと次のデータア
クセスとのアドレスが連続する場合には、これらのデー
タアクセスを1つにまとめることによってデータ転送能
力を高める工夫がなされている。ただし、この工夫は、
命令やデータのプリフェッチを伴うアクセスや、DMA
コントローラ等による読み出しや書き込み動作のそれぞ
れが時間的に連続している場合にのみ有効である。一般
的なシステムでは命令フェッチ、データアクセス、DM
Aアクセスが競合し合うため、大規模かつ複雑なインタ
フェースに見合った効果が得られない。
【0006】
【発明が解決しようとする課題】デジタルテレビや携帯
機器におけるメディアデータ処理結果や画像データの座
標計算処理結果をグラフィックス処理用のコプロセッサ
へ転送する場合を例としたデータ転送の効率向上が、本
発明が解決しようとする課題である。
機器におけるメディアデータ処理結果や画像データの座
標計算処理結果をグラフィックス処理用のコプロセッサ
へ転送する場合を例としたデータ転送の効率向上が、本
発明が解決しようとする課題である。
【0007】例にあげた演算処理は大量のデータと大規
模な演算とを必要とするため、長い時間単位では連続し
たアドレスへのデータ転送でありながら、短い時間の単
位では連続性がなく、従来技術で述べた、複数のデータ
アクセスを1つにまとめる工夫をしたメモリインタフェ
ースも、その効果が望めない。更に、演算処理結果の書
き込みの遅延が長いため、新たな演算処理に必要とする
メモリデータの読み出しが待たされることになり、シス
テム性能を更に低下させることになる。
模な演算とを必要とするため、長い時間単位では連続し
たアドレスへのデータ転送でありながら、短い時間の単
位では連続性がなく、従来技術で述べた、複数のデータ
アクセスを1つにまとめる工夫をしたメモリインタフェ
ースも、その効果が望めない。更に、演算処理結果の書
き込みの遅延が長いため、新たな演算処理に必要とする
メモリデータの読み出しが待たされることになり、シス
テム性能を更に低下させることになる。
【0008】本発明は、上記課題を解決するものであ
り、CPU等の演算器から、ブロック単位のデータ転送
に最適化されたメモリやコプロセッサへのデータ転送の
効率を高め、以てシステム性能を高めることができるデ
ータバッファを提供することを目的とする。
り、CPU等の演算器から、ブロック単位のデータ転送
に最適化されたメモリやコプロセッサへのデータ転送の
効率を高め、以てシステム性能を高めることができるデ
ータバッファを提供することを目的とする。
【0009】
【課題を解決するための手段】上記課題を解決するため
に、本発明は、問題となるデータは書き込み後に同じプ
ログラムから参照されることがなく、連続したアドレス
への書き込みであり、しかもその書き込みが時間的に連
続していないという特徴を利用する。つまり、本発明で
は、ユニークなアドレスが割り当てられた入力データレ
ジスタへのデータ書き込みにより、書き込まれたデータ
を予め設定された転送先データサイズ(Nバイト:例え
ばN=16)のデータブロックにまとめるための手段を
具備する。
に、本発明は、問題となるデータは書き込み後に同じプ
ログラムから参照されることがなく、連続したアドレス
への書き込みであり、しかもその書き込みが時間的に連
続していないという特徴を利用する。つまり、本発明で
は、ユニークなアドレスが割り当てられた入力データレ
ジスタへのデータ書き込みにより、書き込まれたデータ
を予め設定された転送先データサイズ(Nバイト:例え
ばN=16)のデータブロックにまとめるための手段を
具備する。
【0010】具体的に説明すると、請求項1記載の発明
は、データバスを介して与えられた転送先アドレスを初
期アドレスとして保持するための初期アドレスレジスタ
と、同データバスを介して与えられたMバイト(Mは1
以上の整数)のデータ入力を最大k個(kは2以上の整
数)まで保持するための入力データレジスタと、データ
バッファ書き込み信号が与えられた際に、アドレスバス
上のアドレスが初期アドレスレジスタを指定するアドレ
スである場合にはデータバス上の転送先アドレスが初期
アドレスレジスタに書き込まれ、同アドレスバス上のア
ドレスが入力データレジスタを指定するアドレスである
場合にはデータバス上のMバイトのデータが入力データ
レジスタに書き込まれるように、同アドレスバス上のア
ドレスをデコードするためのアドレスデコーダと、入力
データレジスタに蓄積された最大Nバイト(N=kM)
のデータブロックのサイズを表す蓄積データサイズを保
持するための蓄積データサイズレジスタと、転送すべき
データブロックを保持するための出力データレジスタ
と、転送すべきデータブロックの先頭アドレスを保持す
るためのブロックアドレスレジスタと、転送すべきデー
タブロックのサイズを表すブロックサイズを保持するた
めのブロックサイズレジスタと、初期アドレスレジスタ
から転送された初期アドレスを初期値とし、かつブロッ
クサイズに応じて更新されるブロックアドレスを保持す
るためのブロックアドレスカウンタと、データバス上の
Mバイトのデータ入力が入力データレジスタに書き込ま
れる毎に蓄積データサイズをMバイトずつ更新し、初期
アドレスがNバイト境界アドレス(Nで割り切れるアド
レス)である場合には、ブロックサイズレジスタのブロ
ックサイズをNバイトに設定し、蓄積データサイズがN
バイトに達するのを待って、入力データレジスタに蓄積
されたNバイトのデータブロックを出力データレジスタ
へ転送させ、ブロックアドレスカウンタが保持している
ブロックアドレスをブロックアドレスレジスタへ転送さ
せ、かつ出力データレジスタに保持されたNバイトのデ
ータブロックが転送されるようにブロックデータ書き込
み要求信号をアサートし、蓄積データサイズを0にリセ
ットし、かつブロックアドレスカウンタが保持している
ブロックアドレスをNバイトだけ更新させるためのシー
ケンスコントローラとを備えたことを特徴とする。
は、データバスを介して与えられた転送先アドレスを初
期アドレスとして保持するための初期アドレスレジスタ
と、同データバスを介して与えられたMバイト(Mは1
以上の整数)のデータ入力を最大k個(kは2以上の整
数)まで保持するための入力データレジスタと、データ
バッファ書き込み信号が与えられた際に、アドレスバス
上のアドレスが初期アドレスレジスタを指定するアドレ
スである場合にはデータバス上の転送先アドレスが初期
アドレスレジスタに書き込まれ、同アドレスバス上のア
ドレスが入力データレジスタを指定するアドレスである
場合にはデータバス上のMバイトのデータが入力データ
レジスタに書き込まれるように、同アドレスバス上のア
ドレスをデコードするためのアドレスデコーダと、入力
データレジスタに蓄積された最大Nバイト(N=kM)
のデータブロックのサイズを表す蓄積データサイズを保
持するための蓄積データサイズレジスタと、転送すべき
データブロックを保持するための出力データレジスタ
と、転送すべきデータブロックの先頭アドレスを保持す
るためのブロックアドレスレジスタと、転送すべきデー
タブロックのサイズを表すブロックサイズを保持するた
めのブロックサイズレジスタと、初期アドレスレジスタ
から転送された初期アドレスを初期値とし、かつブロッ
クサイズに応じて更新されるブロックアドレスを保持す
るためのブロックアドレスカウンタと、データバス上の
Mバイトのデータ入力が入力データレジスタに書き込ま
れる毎に蓄積データサイズをMバイトずつ更新し、初期
アドレスがNバイト境界アドレス(Nで割り切れるアド
レス)である場合には、ブロックサイズレジスタのブロ
ックサイズをNバイトに設定し、蓄積データサイズがN
バイトに達するのを待って、入力データレジスタに蓄積
されたNバイトのデータブロックを出力データレジスタ
へ転送させ、ブロックアドレスカウンタが保持している
ブロックアドレスをブロックアドレスレジスタへ転送さ
せ、かつ出力データレジスタに保持されたNバイトのデ
ータブロックが転送されるようにブロックデータ書き込
み要求信号をアサートし、蓄積データサイズを0にリセ
ットし、かつブロックアドレスカウンタが保持している
ブロックアドレスをNバイトだけ更新させるためのシー
ケンスコントローラとを備えたことを特徴とする。
【0011】請求項2記載の発明は、初期アドレスレジ
スタに新たな転送先アドレスを設定することなく入力デ
ータレジスタにデータを書き込むことにより、連続した
転送先への新たなブロックデータ転送を実行することを
特徴とする。この発明により、データバッファへのデー
タの書き込み毎に転送先アドレスを指定する必要がな
く、データ転送効率を向上することができる。
スタに新たな転送先アドレスを設定することなく入力デ
ータレジスタにデータを書き込むことにより、連続した
転送先への新たなブロックデータ転送を実行することを
特徴とする。この発明により、データバッファへのデー
タの書き込み毎に転送先アドレスを指定する必要がな
く、データ転送効率を向上することができる。
【0012】請求項3記載の発明は、初期アドレスレジ
スタに転送先アドレスを設定した時点でブロックデータ
サイズに満たないデータが既に入力データレジスタに書
き込まれている場合には、既に書き込まれているデータ
をまとめてブロックデータとして掃き出すようにブロッ
クデータ書き込み要求信号をアサートすることにより、
データを強制的にメモリへ転送するための手段を備えた
ことを特徴とする。この発明により、ブロックサイズの
整数倍でないデータ転送等で、ソフトウェアからの指示
でデータを強制的に転送することが可能となる。
スタに転送先アドレスを設定した時点でブロックデータ
サイズに満たないデータが既に入力データレジスタに書
き込まれている場合には、既に書き込まれているデータ
をまとめてブロックデータとして掃き出すようにブロッ
クデータ書き込み要求信号をアサートすることにより、
データを強制的にメモリへ転送するための手段を備えた
ことを特徴とする。この発明により、ブロックサイズの
整数倍でないデータ転送等で、ソフトウェアからの指示
でデータを強制的に転送することが可能となる。
【0013】請求項4記載の発明は、Nバイト境界以外
の転送先アドレスを指定したとき、ブロックサイズのバ
イト境界までは入力データレジスタへの書き込み毎にブ
ロックデータ書き込み要求信号をアサートすることで、
例えばN=16の場合に16バイト単位以外に4バイト
単位のデータ転送のみが許容されており、8バイト単位
や12バイト単位のブロック転送手段を持たないメモリ
コントローラに対応することを特徴とする。
の転送先アドレスを指定したとき、ブロックサイズのバ
イト境界までは入力データレジスタへの書き込み毎にブ
ロックデータ書き込み要求信号をアサートすることで、
例えばN=16の場合に16バイト単位以外に4バイト
単位のデータ転送のみが許容されており、8バイト単位
や12バイト単位のブロック転送手段を持たないメモリ
コントローラに対応することを特徴とする。
【0014】請求項5記載の発明は、請求項4の発明と
は違って、例えばN=16の場合に16バイト単位以外
に4バイト単位、8バイト単位、12バイト単位をも許
容されたブロック転送手段を有するメモリコントローラ
に対応して最適なメモリアクセスを行うために、Nバイ
ト境界以外の転送先アドレスを指定したとき、ブロック
サイズのバイト境界までのデータをまとめてブロックデ
ータとし、ブロックデータ書き込み要求信号をアサート
することを特徴とする。
は違って、例えばN=16の場合に16バイト単位以外
に4バイト単位、8バイト単位、12バイト単位をも許
容されたブロック転送手段を有するメモリコントローラ
に対応して最適なメモリアクセスを行うために、Nバイ
ト境界以外の転送先アドレスを指定したとき、ブロック
サイズのバイト境界までのデータをまとめてブロックデ
ータとし、ブロックデータ書き込み要求信号をアサート
することを特徴とする。
【0015】請求項6記載の発明は、データバッファが
2ブロック以上のブロックデータを保持できるようにす
ることで、CPUからの書き込み速度とブロックデータ
転送速度との間の緩衝を行うことを特徴とする。
2ブロック以上のブロックデータを保持できるようにす
ることで、CPUからの書き込み速度とブロックデータ
転送速度との間の緩衝を行うことを特徴とする。
【0016】請求項7記載の発明は、データバッファへ
の書き込みに対しメモリコントローラ等への転送が追い
つかない場合には、入力データレジスタへの書き込みを
禁止するための信号を発生することで、書き込みデータ
の消失を防止することを特徴とする。
の書き込みに対しメモリコントローラ等への転送が追い
つかない場合には、入力データレジスタへの書き込みを
禁止するための信号を発生することで、書き込みデータ
の消失を防止することを特徴とする。
【0017】
【発明の実施の形態】図1は、本発明の実施形態に係る
データバッファを組み込んだコンピュータシステムの構
成例を示している。このコンピュータシステムは、CP
U1と、メモリコントローラ2と、SDRAM3とを備
え、更にCPU1とメモリコントローラ2との間にキャ
ッシュメモリ4と、本発明の実施形態に係るデータバッ
ファ5とを備えたものである。このデータバッファ5
は、入力データレジスタ11と、出力データレジスタ1
2と、初期アドレスレジスタ13と、ブロックアドレス
カウンタ14と、ブロックアドレスレジスタ15と、ブ
ロックサイズレジスタ16と、アドレスデコーダ17
と、蓄積データサイズレジスタ18と、シーケンスコン
トローラ19とで構成されている。
データバッファを組み込んだコンピュータシステムの構
成例を示している。このコンピュータシステムは、CP
U1と、メモリコントローラ2と、SDRAM3とを備
え、更にCPU1とメモリコントローラ2との間にキャ
ッシュメモリ4と、本発明の実施形態に係るデータバッ
ファ5とを備えたものである。このデータバッファ5
は、入力データレジスタ11と、出力データレジスタ1
2と、初期アドレスレジスタ13と、ブロックアドレス
カウンタ14と、ブロックアドレスレジスタ15と、ブ
ロックサイズレジスタ16と、アドレスデコーダ17
と、蓄積データサイズレジスタ18と、シーケンスコン
トローラ19とで構成されている。
【0018】図1のデータバッファ5は、CPUアドレ
スバス(CADD)と、CPUデータバス(CDAT
A)と、データバッファ書き込み信号(CWR)とで、
CPU1に接続されている。CPU1がCWRをアサー
トすると、アクセスされたアドレスをアドレスデコーダ
17がデコードし、初期アドレスレジスタ13へアドレ
スを、入力データレジスタ11へデータをそれぞれ書き
込むことができる。具体的に説明すると、アドレスデコ
ーダ17は、CWRがアサートされた時点でCADDの
値が初期アドレスレジスタ13を指定している場合に
は、初期アドレス書き込み信号(IAW)をアサートす
ることで、CDATA上のアドレスデータを初期アドレ
スレジスタ13へ転送する。また、アドレスデコーダ1
7は、CWRがアサートされた時点のCADDの値が入
力データレジスタ11を指定している場合には、データ
書き込み信号(DW)をアサートすることで、CDAT
A上のデータを入力データレジスタ11へ転送する。更
に、アドレスデコーダ17は、CPU1によるデータバ
ッファ5の初期化アクセスをCADDの値から検知した
とき、シーケンスコントローラ19へのリセット信号
(RST)をアサートする機能をも有するものである。
スバス(CADD)と、CPUデータバス(CDAT
A)と、データバッファ書き込み信号(CWR)とで、
CPU1に接続されている。CPU1がCWRをアサー
トすると、アクセスされたアドレスをアドレスデコーダ
17がデコードし、初期アドレスレジスタ13へアドレ
スを、入力データレジスタ11へデータをそれぞれ書き
込むことができる。具体的に説明すると、アドレスデコ
ーダ17は、CWRがアサートされた時点でCADDの
値が初期アドレスレジスタ13を指定している場合に
は、初期アドレス書き込み信号(IAW)をアサートす
ることで、CDATA上のアドレスデータを初期アドレ
スレジスタ13へ転送する。また、アドレスデコーダ1
7は、CWRがアサートされた時点のCADDの値が入
力データレジスタ11を指定している場合には、データ
書き込み信号(DW)をアサートすることで、CDAT
A上のデータを入力データレジスタ11へ転送する。更
に、アドレスデコーダ17は、CPU1によるデータバ
ッファ5の初期化アクセスをCADDの値から検知した
とき、シーケンスコントローラ19へのリセット信号
(RST)をアサートする機能をも有するものである。
【0019】一方、データバッファ5は、メモリアドレ
スバス(MADD)と、メモリデータバス(MDAT
A)と、メモリアクセスデータサイズバス(MDS)
と、ブロックデータ書き込み要求信号(BDWR)と
で、メモリコントローラ2に接続されている。メモリコ
ントローラ2は、同じくMADDと、MDATAと、M
DSとによって接続されるキャッシュメモリ4からのメ
モリ読み出し信号(MRD)及びメモリ書き込み信号
(MWR)によるアクセス要求と、データバッファ5か
らのBDWRによるアクセス要求とを調停してSDRA
M3へのデータ書き込み及びSDRAM3からのデータ
読み出しを行う。
スバス(MADD)と、メモリデータバス(MDAT
A)と、メモリアクセスデータサイズバス(MDS)
と、ブロックデータ書き込み要求信号(BDWR)と
で、メモリコントローラ2に接続されている。メモリコ
ントローラ2は、同じくMADDと、MDATAと、M
DSとによって接続されるキャッシュメモリ4からのメ
モリ読み出し信号(MRD)及びメモリ書き込み信号
(MWR)によるアクセス要求と、データバッファ5か
らのBDWRによるアクセス要求とを調停してSDRA
M3へのデータ書き込み及びSDRAM3からのデータ
読み出しを行う。
【0020】CPU1は、CADDで指定したアドレス
に対してキャッシュ読み出し信号(CAR)をアサート
することで、キャッシュメモリ4からCDATAを介し
てデータを読み出すことができる。また、CPU1は、
キャッシュメモリ4から読み出したデータを用いて演算
し、演算結果をデータバッファ5へ書き込むことができ
る。更に、CPU1は、CADDで指定したアドレスに
対してキャッシュ書き込み信号(CAW)をアサートす
ることで、CDATAを介してキャッシュメモリ4へデ
ータを書き込むこともできる。
に対してキャッシュ読み出し信号(CAR)をアサート
することで、キャッシュメモリ4からCDATAを介し
てデータを読み出すことができる。また、CPU1は、
キャッシュメモリ4から読み出したデータを用いて演算
し、演算結果をデータバッファ5へ書き込むことができ
る。更に、CPU1は、CADDで指定したアドレスに
対してキャッシュ書き込み信号(CAW)をアサートす
ることで、CDATAを介してキャッシュメモリ4へデ
ータを書き込むこともできる。
【0021】以下に、本発明のデータバッファ5の動作
を図2〜図5を用いて説明する。説明の便宜上、CPU
1からの書き込み単位が4バイトであり、ブロックデー
タサイズが16バイトの場合を例としており、CDAT
Aは4バイト(32ビット)であり、入力データレジス
タ11からの出力であるブロックデータ(BD)及び出
力データレジスタ12の出力であるMDATAは16バ
イト(128ビット)で構成されている。また、データ
バッファ5のリセットはアドレスA0で、初期アドレス
レジスタ13の書き込みはアドレスA1で、入力データ
レジスタ11の書き込みはアドレスA2でそれぞれアク
セスできるものとする。
を図2〜図5を用いて説明する。説明の便宜上、CPU
1からの書き込み単位が4バイトであり、ブロックデー
タサイズが16バイトの場合を例としており、CDAT
Aは4バイト(32ビット)であり、入力データレジス
タ11からの出力であるブロックデータ(BD)及び出
力データレジスタ12の出力であるMDATAは16バ
イト(128ビット)で構成されている。また、データ
バッファ5のリセットはアドレスA0で、初期アドレス
レジスタ13の書き込みはアドレスA1で、入力データ
レジスタ11の書き込みはアドレスA2でそれぞれアク
セスできるものとする。
【0022】図2は、データバッファ5におけるアドレ
ス生成アルゴリズムを示している。ステップS0では、
アドレスデコーダ17がデータバッファ5の初期化アク
セスのアドレスA0をデコードし、RSTをアサートす
ることで、シーケンスコントローラ19は、蓄積データ
サイズレジスタ18への蓄積データサイズリセット信号
(ADR)をアサートし、入力データレジスタ11に蓄
積されたデータブロックのサイズを表す蓄積データサイ
ズ(ADS)を0に初期化する。ステップS1でデータ
バッファ5への書き込みが初期アドレスレジスタ13に
対する初期アドレス(IADD)の書き込みであった場
合には、ステップS2でADSの値が0であるかを判断
する。ADSの値が0以外の場合、既に蓄積されている
データが存在することを示している。この場合、ブロッ
クサイズ(BS)をADSの値に更新し、ブロックデー
タ更新信号(BDU)をアサートし、BDWRをアサー
トすることで蓄積データをメモリコントローラ2に転送
する(ステップS3)。ADSの値が0である場合、蓄
積されているデータが存在しないことを示しており、ス
テップS4へと制御を移す。ステップS4では、ADS
の値を0に再設定し、ブロックアドレス書き込み信号
(BAW)をアサートすることでブロックアドレスカウ
ンタ14のブロックアドレス(BA)をIADDに設定
する。次にステップS5では、IADDが16バイト境
界のアドレスであるかを判断する。16バイト境界値で
ない場合には、ステップS6でデータバッファ5へのデ
ータ書き込みサイズ(設計時の固定サイズ)である4バ
イトにBSを設定する。16バイト境界である場合に
は、ステップS7においてBSを16バイトに設定す
る。ステップS6及びステップS7からステップS1へ
戻る。
ス生成アルゴリズムを示している。ステップS0では、
アドレスデコーダ17がデータバッファ5の初期化アク
セスのアドレスA0をデコードし、RSTをアサートす
ることで、シーケンスコントローラ19は、蓄積データ
サイズレジスタ18への蓄積データサイズリセット信号
(ADR)をアサートし、入力データレジスタ11に蓄
積されたデータブロックのサイズを表す蓄積データサイ
ズ(ADS)を0に初期化する。ステップS1でデータ
バッファ5への書き込みが初期アドレスレジスタ13に
対する初期アドレス(IADD)の書き込みであった場
合には、ステップS2でADSの値が0であるかを判断
する。ADSの値が0以外の場合、既に蓄積されている
データが存在することを示している。この場合、ブロッ
クサイズ(BS)をADSの値に更新し、ブロックデー
タ更新信号(BDU)をアサートし、BDWRをアサー
トすることで蓄積データをメモリコントローラ2に転送
する(ステップS3)。ADSの値が0である場合、蓄
積されているデータが存在しないことを示しており、ス
テップS4へと制御を移す。ステップS4では、ADS
の値を0に再設定し、ブロックアドレス書き込み信号
(BAW)をアサートすることでブロックアドレスカウ
ンタ14のブロックアドレス(BA)をIADDに設定
する。次にステップS5では、IADDが16バイト境
界のアドレスであるかを判断する。16バイト境界値で
ない場合には、ステップS6でデータバッファ5へのデ
ータ書き込みサイズ(設計時の固定サイズ)である4バ
イトにBSを設定する。16バイト境界である場合に
は、ステップS7においてBSを16バイトに設定す
る。ステップS6及びステップS7からステップS1へ
戻る。
【0023】一方、ステップS1においてデータバッフ
ァ5への書き込みが入力データレジスタ11への書き込
みである場合、ステップS8において蓄積データサイズ
インクリメント信号(ADI)のアサートによりADS
を4バイト分更新する。ステップS9では、BSの値に
より2通りの制御を選択する。
ァ5への書き込みが入力データレジスタ11への書き込
みである場合、ステップS8において蓄積データサイズ
インクリメント信号(ADI)のアサートによりADS
を4バイト分更新する。ステップS9では、BSの値に
より2通りの制御を選択する。
【0024】まず、BSの値が16バイトを示している
場合には、ステップS10へと移りADSの値により1
6バイトのデータが蓄積されているかを判断する。AD
Sの値が16バイトを示している場合には、ステップS
11でBDWRをアサートし、MDSを16バイトの値
を示す信号とすることで蓄積データをメモリコントロー
ラ2に転送する。ステップS12では、ADRのアサー
トによりADSの値を0に再設定し、かつブロックアド
レス更新信号(BAU)のアサートによりBAの値を転
送されたバイト数分の16だけインクリメントする。一
方、ステップS10でADSの値が16バイトを示して
いない場合には、ステップS1へ戻る。
場合には、ステップS10へと移りADSの値により1
6バイトのデータが蓄積されているかを判断する。AD
Sの値が16バイトを示している場合には、ステップS
11でBDWRをアサートし、MDSを16バイトの値
を示す信号とすることで蓄積データをメモリコントロー
ラ2に転送する。ステップS12では、ADRのアサー
トによりADSの値を0に再設定し、かつブロックアド
レス更新信号(BAU)のアサートによりBAの値を転
送されたバイト数分の16だけインクリメントする。一
方、ステップS10でADSの値が16バイトを示して
いない場合には、ステップS1へ戻る。
【0025】ステップS9でBSの値が4バイトを示し
ている場合には、ステップS13でBDWRをアサート
し、MDSを4バイトの値を示す信号とすることで蓄積
データをメモリコントローラ2に転送し、ステップS1
4へ制御を移す。ステップS14では、ADRのアサー
トによりADSの値を0に再設定し、かつBAUのアサ
ートによりBAの値を転送されたバイト数分の4だけイ
ンクリメントする。ステップS15では、BAの値がイ
ンクリメントされたことにより、BAの値が16バイト
境界のアドレスを示している場合には、以降のデータ転
送を16バイト単位で行うためにステップS16でBS
の値を16バイトに設定する。そうでない場合には、B
Sを変更しないでステップS1へ戻る。
ている場合には、ステップS13でBDWRをアサート
し、MDSを4バイトの値を示す信号とすることで蓄積
データをメモリコントローラ2に転送し、ステップS1
4へ制御を移す。ステップS14では、ADRのアサー
トによりADSの値を0に再設定し、かつBAUのアサ
ートによりBAの値を転送されたバイト数分の4だけイ
ンクリメントする。ステップS15では、BAの値がイ
ンクリメントされたことにより、BAの値が16バイト
境界のアドレスを示している場合には、以降のデータ転
送を16バイト単位で行うためにステップS16でBS
の値を16バイトに設定する。そうでない場合には、B
Sを変更しないでステップS1へ戻る。
【0026】次に、図3のタイミング図を用いてデータ
バッファ5の動作例を説明する。アドレスデコーダ17
はCADDの値により、CPU1がアクセスしようとし
ているのが初期アドレスレジスタ13であることを認識
し、IAWをアサートすることで時刻t31において初
期アドレスレジスタ13に値1000(HEX:16進
数)が書き込まれ、IADDが1000(HEX)とな
る。シーケンスコントローラ19は、IAWがアサート
されたことで、BAWをアサートし、ブロックアドレス
カウンタ14に1000(HEX)を書き込む。次に、
CPU1はCADDに値A2、CDATAに値D2を出
力し、CWRをアサートする。アドレスデコーダ17は
CADDの値により、CPU1がアクセスしようとして
いるのが入力データレジスタ11であることを認識し、
DWをアサートすることで時刻t32において入力デー
タレジスタ11に値D2が書き込まれ、BDがD2とな
る。更に、時刻t33に値D3が、時刻t34に値D4
が、更に時刻t35に値D5が書き込まれたことで、入
力データレジスタ11に16バイトのデータが書き込ま
れたことになる。シーケンスコントローラ19は、入力
データレジスタ11への書き込み毎にADIをアサート
し、蓄積データサイズレジスタ18の値を4バイト分加
えた値に更新する。シーケンスコントローラ19から、
出力データレジスタ12とブロックアドレスレジスタ1
5とブロックサイズレジスタ16とに対して、BDUが
アサートされ、時刻t36にMADDが1000(HE
X)となり、MDATAが128ビットデータの[D
5,D4,D3,D2]となり、MDSが16バイトを
示す信号となる。この際、シーケンスコントローラ19
は、BDWRをアサートすることで、メモリコントロー
ラ2に対し、データの書き込みを要求する。更に、シー
ケンスコントローラ19は、BAUにより16バイト分
のアドレス更新コマンドを発行することで、アドレス1
000(HEX)に16バイト分を加えた1010(H
EX)にBAを更新させる(時刻t37)。したがっ
て、CPU1は、初期アドレスレジスタ13に新たな転
送先アドレスを設定することなく各々4バイトの4個の
値を入力データレジスタ11に次々と書き込むことによ
り、これら4個の値からなる16バイトデータをSDR
AM3のアドレス1010(HEX)へ転送させること
ができる。
バッファ5の動作例を説明する。アドレスデコーダ17
はCADDの値により、CPU1がアクセスしようとし
ているのが初期アドレスレジスタ13であることを認識
し、IAWをアサートすることで時刻t31において初
期アドレスレジスタ13に値1000(HEX:16進
数)が書き込まれ、IADDが1000(HEX)とな
る。シーケンスコントローラ19は、IAWがアサート
されたことで、BAWをアサートし、ブロックアドレス
カウンタ14に1000(HEX)を書き込む。次に、
CPU1はCADDに値A2、CDATAに値D2を出
力し、CWRをアサートする。アドレスデコーダ17は
CADDの値により、CPU1がアクセスしようとして
いるのが入力データレジスタ11であることを認識し、
DWをアサートすることで時刻t32において入力デー
タレジスタ11に値D2が書き込まれ、BDがD2とな
る。更に、時刻t33に値D3が、時刻t34に値D4
が、更に時刻t35に値D5が書き込まれたことで、入
力データレジスタ11に16バイトのデータが書き込ま
れたことになる。シーケンスコントローラ19は、入力
データレジスタ11への書き込み毎にADIをアサート
し、蓄積データサイズレジスタ18の値を4バイト分加
えた値に更新する。シーケンスコントローラ19から、
出力データレジスタ12とブロックアドレスレジスタ1
5とブロックサイズレジスタ16とに対して、BDUが
アサートされ、時刻t36にMADDが1000(HE
X)となり、MDATAが128ビットデータの[D
5,D4,D3,D2]となり、MDSが16バイトを
示す信号となる。この際、シーケンスコントローラ19
は、BDWRをアサートすることで、メモリコントロー
ラ2に対し、データの書き込みを要求する。更に、シー
ケンスコントローラ19は、BAUにより16バイト分
のアドレス更新コマンドを発行することで、アドレス1
000(HEX)に16バイト分を加えた1010(H
EX)にBAを更新させる(時刻t37)。したがっ
て、CPU1は、初期アドレスレジスタ13に新たな転
送先アドレスを設定することなく各々4バイトの4個の
値を入力データレジスタ11に次々と書き込むことによ
り、これら4個の値からなる16バイトデータをSDR
AM3のアドレス1010(HEX)へ転送させること
ができる。
【0027】次に、図4を用いて、データバッファ5に
ついて、入力データレジスタ11にブロックサイズの1
6バイトに満たないデータ、例えば4バイトのデータが
残っている状態で初期アドレスレジスタ13への書き込
みが発生した場合の動作について説明する。時刻t41
にアドレスA1でアクセスされる初期アドレスレジスタ
13に1000(HEX)が書き込まれた。次に、時刻
t42にアドレスA2でアクセスされる入力データレジ
スタ11に対しデータD2が書き込まれた。この時点で
は、アドレス1000(HEX)を先頭とするブロック
データの一部として、ブロックサイズである16バイト
の4分の1に相当する4バイトのデータD2が入力デー
タレジスタ11に存在する。この状態で、時刻t43に
初期アドレスレジスタ13に新たなブロックアドレス1
020(HEX)が書き込まれた。この初期アドレスレ
ジスタ13への書き込みにより、シーケンスコントロー
ラ19は時刻t43にBDUをアサートする結果、時刻
t44にMADDが1000(HEX)に、MDATA
がD2に、更にMDSが4バイトを示す信号となる。こ
の際、シーケンスコントローラ19は、BDWRをアサ
ートすることで、メモリコントローラ2に対し、データ
の書き込みを要求する。
ついて、入力データレジスタ11にブロックサイズの1
6バイトに満たないデータ、例えば4バイトのデータが
残っている状態で初期アドレスレジスタ13への書き込
みが発生した場合の動作について説明する。時刻t41
にアドレスA1でアクセスされる初期アドレスレジスタ
13に1000(HEX)が書き込まれた。次に、時刻
t42にアドレスA2でアクセスされる入力データレジ
スタ11に対しデータD2が書き込まれた。この時点で
は、アドレス1000(HEX)を先頭とするブロック
データの一部として、ブロックサイズである16バイト
の4分の1に相当する4バイトのデータD2が入力デー
タレジスタ11に存在する。この状態で、時刻t43に
初期アドレスレジスタ13に新たなブロックアドレス1
020(HEX)が書き込まれた。この初期アドレスレ
ジスタ13への書き込みにより、シーケンスコントロー
ラ19は時刻t43にBDUをアサートする結果、時刻
t44にMADDが1000(HEX)に、MDATA
がD2に、更にMDSが4バイトを示す信号となる。こ
の際、シーケンスコントローラ19は、BDWRをアサ
ートすることで、メモリコントローラ2に対し、データ
の書き込みを要求する。
【0028】次に、図5を用いて、データバッファ5に
ついて、初期アドレスレジスタ13に対し、ブロックデ
ータサイズの16バイト境界ではない、1008(HE
X)を設定した場合の動作について説明する。時刻t5
1にアドレスA1でアクセスされる初期アドレスレジス
タ13に1008(HEX)が書き込まれた。次に、時
刻t52にアドレスA2でアクセスされる入力データレ
ジスタ11に対しデータD2が書き込まれた。この時点
で、シーケンスコントローラ19は、IADDの値10
08(HEX)が16バイト境界でないことを認識す
る。更にシーケンスコントローラ19は、BDUをアサ
ートし、BDをD2に更新し、BAUにより4バイト分
のアドレス更新コマンドを発行することで、アドレス1
008(HEX)に4バイト分を加えた100C(HE
X)にBAを更新させる。
ついて、初期アドレスレジスタ13に対し、ブロックデ
ータサイズの16バイト境界ではない、1008(HE
X)を設定した場合の動作について説明する。時刻t5
1にアドレスA1でアクセスされる初期アドレスレジス
タ13に1008(HEX)が書き込まれた。次に、時
刻t52にアドレスA2でアクセスされる入力データレ
ジスタ11に対しデータD2が書き込まれた。この時点
で、シーケンスコントローラ19は、IADDの値10
08(HEX)が16バイト境界でないことを認識す
る。更にシーケンスコントローラ19は、BDUをアサ
ートし、BDをD2に更新し、BAUにより4バイト分
のアドレス更新コマンドを発行することで、アドレス1
008(HEX)に4バイト分を加えた100C(HE
X)にBAを更新させる。
【0029】更にBDUにより、時刻t53にはMAD
Dが1008(HEX)に、MDATAがD2に、更に
MDSが4バイトを示す信号となる。この際、シーケン
スコントローラ19は、BDWRをアサートすること
で、メモリコントローラ2に対し、データの書き込みを
要求する。時刻t54にも入力データレジスタ11に対
しデータD3が書き込まれた。この時点でも、シーケン
スコントローラ19はBDUをアサートし、BDをD3
に更新し、シーケンスコントローラ19がBAUにより
4バイト分のアドレス更新コマンドを発行することで、
ブロックアドレスカウンタ14を、アドレス100C
(HEX)に4バイト分を加えた1010(HEX)に
更新させる。更に、BDUにより、時刻t55にはMA
DDが100C(HEX)に、MDATAがD3に、更
にMDSが4バイトを示す信号となる。この際、シーケ
ンスコントローラ19は、BDWRをアサートすること
で、メモリコントローラ2に対し、データの書き込みを
要求する。この後、時刻t56と時刻t57にも入力デ
ータレジスタ11への書き込みが行われるが、BAの値
が16バイト境界を示していることで、シーケンスコン
トローラ19はBDUをアサートすることなくデータD
4,D5を入力データレジスタ11に蓄積させ、既に述
べた動作に従って、16バイトのブロックデータが揃っ
た時点でメモリコントローラ2に対してブロックデータ
の書き込み要求を行う。
Dが1008(HEX)に、MDATAがD2に、更に
MDSが4バイトを示す信号となる。この際、シーケン
スコントローラ19は、BDWRをアサートすること
で、メモリコントローラ2に対し、データの書き込みを
要求する。時刻t54にも入力データレジスタ11に対
しデータD3が書き込まれた。この時点でも、シーケン
スコントローラ19はBDUをアサートし、BDをD3
に更新し、シーケンスコントローラ19がBAUにより
4バイト分のアドレス更新コマンドを発行することで、
ブロックアドレスカウンタ14を、アドレス100C
(HEX)に4バイト分を加えた1010(HEX)に
更新させる。更に、BDUにより、時刻t55にはMA
DDが100C(HEX)に、MDATAがD3に、更
にMDSが4バイトを示す信号となる。この際、シーケ
ンスコントローラ19は、BDWRをアサートすること
で、メモリコントローラ2に対し、データの書き込みを
要求する。この後、時刻t56と時刻t57にも入力デ
ータレジスタ11への書き込みが行われるが、BAの値
が16バイト境界を示していることで、シーケンスコン
トローラ19はBDUをアサートすることなくデータD
4,D5を入力データレジスタ11に蓄積させ、既に述
べた動作に従って、16バイトのブロックデータが揃っ
た時点でメモリコントローラ2に対してブロックデータ
の書き込み要求を行う。
【0030】図6は、図5の変形例を示している。図5
の場合には16バイト単位以外に4バイト単位のみのブ
ロック転送がメモリコントローラ2により許容されるも
のとしたが、16バイト単位以外に4バイト単位、8バ
イト単位、12バイト単位のブロック転送が許容される
場合には、データバッファ5をこれに対応させ得る。図
6でも、初期アドレスレジスタ13に対し、ブロックデ
ータサイズの16バイト境界ではない、1008(HE
X)を設定したものとする。
の場合には16バイト単位以外に4バイト単位のみのブ
ロック転送がメモリコントローラ2により許容されるも
のとしたが、16バイト単位以外に4バイト単位、8バ
イト単位、12バイト単位のブロック転送が許容される
場合には、データバッファ5をこれに対応させ得る。図
6でも、初期アドレスレジスタ13に対し、ブロックデ
ータサイズの16バイト境界ではない、1008(HE
X)を設定したものとする。
【0031】図6によれば、時刻t61にアドレスA1
でアクセスされる初期アドレスレジスタ13に1008
(HEX)が書き込まれた。次に、時刻t62にアドレ
スA2でアクセスされる入力データレジスタ11に対し
データD2が書き込まれた。この時点で、BDがD2に
更新される。時刻t63にも入力データレジスタ11に
対しデータD3が書き込まれた。この時点で、BDがD
3,D2に更新され、シーケンスコントローラ19はB
DUをアサートする。時刻t64にはMADDが100
8(HEX)に、MDATAがD3,D2に、更にMD
Sが8バイトを示す信号となる。この際、シーケンスコ
ントローラ19は、BDWRをアサートすることで、メ
モリコントローラ2に対し、データの書き込みを要求す
る。この後、時刻t65と時刻t66にも入力データレ
ジスタ11への書き込みが行われるが、BAの値が16
バイト境界を示していることで、シーケンスコントロー
ラ19はBDUをアサートすることなくデータD4,D
5を入力データレジスタ11に蓄積し、既に述べた動作
に従って、16バイトのブロックデータが揃った時点で
シーケンスコントローラ19はメモリコントローラ2に
対してブロックデータの書き込み要求を行う。
でアクセスされる初期アドレスレジスタ13に1008
(HEX)が書き込まれた。次に、時刻t62にアドレ
スA2でアクセスされる入力データレジスタ11に対し
データD2が書き込まれた。この時点で、BDがD2に
更新される。時刻t63にも入力データレジスタ11に
対しデータD3が書き込まれた。この時点で、BDがD
3,D2に更新され、シーケンスコントローラ19はB
DUをアサートする。時刻t64にはMADDが100
8(HEX)に、MDATAがD3,D2に、更にMD
Sが8バイトを示す信号となる。この際、シーケンスコ
ントローラ19は、BDWRをアサートすることで、メ
モリコントローラ2に対し、データの書き込みを要求す
る。この後、時刻t65と時刻t66にも入力データレ
ジスタ11への書き込みが行われるが、BAの値が16
バイト境界を示していることで、シーケンスコントロー
ラ19はBDUをアサートすることなくデータD4,D
5を入力データレジスタ11に蓄積し、既に述べた動作
に従って、16バイトのブロックデータが揃った時点で
シーケンスコントローラ19はメモリコントローラ2に
対してブロックデータの書き込み要求を行う。
【0032】以上、図3〜図6を用いてデータバッファ
5の動作例を説明してきたが、CPU1によるデータバ
ッファ5へのアクセスは、必ずしも時間的に連続してい
なくてよい。例えば、図3中の時刻t31と時刻t32
との間にCPU1によるキャッシュメモリ4へのアクセ
スが入ってもよい。図1のデータバッファ5は、自己へ
のアクセス要求をいつでもアドレスデコーダ17で判別
することができる。
5の動作例を説明してきたが、CPU1によるデータバ
ッファ5へのアクセスは、必ずしも時間的に連続してい
なくてよい。例えば、図3中の時刻t31と時刻t32
との間にCPU1によるキャッシュメモリ4へのアクセ
スが入ってもよい。図1のデータバッファ5は、自己へ
のアクセス要求をいつでもアドレスデコーダ17で判別
することができる。
【0033】なお、図1に示すとおり、シーケンスコン
トローラ19は、入力データレジスタ11が保持できる
最大サイズのデータを既に保持していることをADSに
より認識したとき、CPU1による当該入力データレジ
スタ11への書き込みを禁止するようにデータ書き込み
禁止信号(CINH)を発生する。これにより、データ
の消失を未然に防止することができる。
トローラ19は、入力データレジスタ11が保持できる
最大サイズのデータを既に保持していることをADSに
より認識したとき、CPU1による当該入力データレジ
スタ11への書き込みを禁止するようにデータ書き込み
禁止信号(CINH)を発生する。これにより、データ
の消失を未然に防止することができる。
【0034】2ブロック以上のブロックデータを保持で
きるように出力データレジスタ12にFIFO構成を採
用してもよい。これに伴ってブロックアドレスレジスタ
15及びブロックサイズレジスタ16にもFIFO構成
を採用すればよい。CPU1が実行する複数のプロセス
の各々がメモリ資源を必要とする場合には、個々のプロ
セスのためにそれぞれ図1中のデータバッファ5を設け
ればよい。
きるように出力データレジスタ12にFIFO構成を採
用してもよい。これに伴ってブロックアドレスレジスタ
15及びブロックサイズレジスタ16にもFIFO構成
を採用すればよい。CPU1が実行する複数のプロセス
の各々がメモリ資源を必要とする場合には、個々のプロ
セスのためにそれぞれ図1中のデータバッファ5を設け
ればよい。
【0035】
【発明の効果】以上説明してきたとおり、本発明によれ
ば、ユニークなアドレスが割り当てられた入力データレ
ジスタへのデータ書き込みにより、書き込まれたデータ
を予め設定された転送先データサイズのデータブロック
にまとめることとしたので、例えば数バイト単位でデー
タを処理するソフトウェアプログラムから、十数バイト
のブロック単位でのデータ転送に最適化されたメモリや
コプロセッサへのデータ転送の効率を高め、以てシステ
ム性能を高めることができるデータバッファを提供する
ことができる。
ば、ユニークなアドレスが割り当てられた入力データレ
ジスタへのデータ書き込みにより、書き込まれたデータ
を予め設定された転送先データサイズのデータブロック
にまとめることとしたので、例えば数バイト単位でデー
タを処理するソフトウェアプログラムから、十数バイト
のブロック単位でのデータ転送に最適化されたメモリや
コプロセッサへのデータ転送の効率を高め、以てシステ
ム性能を高めることができるデータバッファを提供する
ことができる。
【図1】本発明の実施形態に係るデータバッファを組み
込んだコンピュータシステムの構成例を示すブロック図
である。
込んだコンピュータシステムの構成例を示すブロック図
である。
【図2】図1中のデータバッファにおけるアドレス生成
アルゴリズムを示すフローチャート図である。
アルゴリズムを示すフローチャート図である。
【図3】図1中のデータバッファの動作例を示すタイミ
ング図である。
ング図である。
【図4】図1中のデータバッファの他の動作例を示すタ
イミング図である。
イミング図である。
【図5】図1中のデータバッファの更に他の動作例を示
すタイミング図である。
すタイミング図である。
【図6】図5の変形例を示すタイミング図である。
1 CPU
2 メモリコントローラ
3 SDRAM
4 キャッシュメモリ
5 データバッファ
11 入力データレジスタ
12 出力データレジスタ
13 初期アドレスレジスタ
14 ブロックアドレスカウンタ
15 ブロックアドレスレジスタ
16 ブロックサイズレジスタ
17 アドレスデコーダ
18 蓄積データサイズレジスタ
19 シーケンスコントローラ
ADI 蓄積データサイズインクリメント信号
ADR 蓄積データサイズリセット信号
ADS 蓄積データサイズ
BA ブロックアドレス
BAU ブロックアドレス更新信号
BAW ブロックアドレス書き込み信号
BD ブロックデータ
BDU ブロックデータ更新信号
BDWR ブロックデータ書き込み要求信号
BS ブロックサイズ
CADD CPUアドレスバス
CAR キャッシュ読み出し信号
CAW キャッシュ書き込み信号
CDATA CPUデータバス
CINH データ書き込み禁止信号
CWR データバッファ書き込み信号
DW データ書き込み信号
IADD 初期アドレス
IAW 初期アドレス書き込み信号
MADD メモリアドレスバス
MDATA メモリデータバス
MDS メモリアクセスデータサイズバス
MRD メモリ読み出し信号
MWR メモリ書き込み信号
RST リセット信号
Claims (7)
- 【請求項1】 ブロック単位でのデータ転送のためのデ
ータバッファであって、 データバスを介して与えられた転送先アドレスを初期ア
ドレスとして保持するための初期アドレスレジスタと、 前記データバスを介して与えられたMバイト(Mは1以
上の整数)のデータ入力を最大k個(kは2以上の整
数)まで保持するための入力データレジスタと、 データバッファ書き込み信号が与えられた際に、アドレ
スバス上のアドレスが前記初期アドレスレジスタを指定
するアドレスである場合には、前記データバス上の転送
先アドレスが前記初期アドレスレジスタに書き込まれ、
前記アドレスバス上のアドレスが前記入力データレジス
タを指定するアドレスである場合には、前記データバス
上のMバイトのデータが前記入力データレジスタに書き
込まれるように、前記アドレスバス上のアドレスをデコ
ードするためのアドレスデコーダと、 前記入力データレジスタに蓄積された最大Nバイト(N
=kM)のデータブロックのサイズを表す蓄積データサ
イズを保持するための蓄積データサイズレジスタと、 転送すべきデータブロックを保持するための出力データ
レジスタと、 前記転送すべきデータブロックの先頭アドレスを保持す
るためのブロックアドレスレジスタと、 前記転送すべきデータブロックのサイズを表すブロック
サイズを保持するためのブロックサイズレジスタと、 前記初期アドレスレジスタから転送された初期アドレス
を初期値とし、かつ前記ブロックサイズに応じて更新さ
れるブロックアドレスを保持するためのブロックアドレ
スカウンタと、 前記データバス上のMバイトのデータ入力が前記入力デ
ータレジスタに書き込まれる毎に前記蓄積データサイズ
をMバイトずつ更新し、前記初期アドレスがNバイト境
界アドレス(Nで割り切れるアドレス)である場合に
は、前記ブロックサイズレジスタのブロックサイズをN
バイトに設定し、前記蓄積データサイズがNバイトに達
するのを待って、前記入力データレジスタに蓄積された
Nバイトのデータブロックを前記出力データレジスタへ
転送させ、前記ブロックアドレスカウンタが保持してい
るブロックアドレスを前記ブロックアドレスレジスタへ
転送させ、かつ前記出力データレジスタに保持されたN
バイトのデータブロックが転送されるようにブロックデ
ータ書き込み要求信号をアサートし、前記蓄積データサ
イズを0にリセットし、かつ前記ブロックアドレスカウ
ンタが保持しているブロックアドレスをNバイトだけ更
新させるためのシーケンスコントローラとを備えたこと
を特徴とするデータバッファ。 - 【請求項2】 請求項1記載のデータバッファにおい
て、 前記シーケンスコントローラは、前記初期アドレスレジ
スタへの新たな転送先アドレスの書き込みなしに、前記
更新されたブロックアドレスを用いて次のk個のMバイ
トデータ入力の転送のための処理を続行する機能を更に
備えたことを特徴とするデータバッファ。 - 【請求項3】 請求項1又は2に記載のデータバッファ
において、 前記シーケンスコントローラは、前記データバス上の転
送先アドレスが前記初期アドレスレジスタに書き込まれ
た時点で前記蓄積データサイズが0でない場合には、前
記ブロックサイズレジスタのブロックサイズを前記蓄積
データサイズの値に更新し、前記入力データレジスタに
蓄積されたデータブロックを前記出力データレジスタへ
転送させ、前記ブロックアドレスカウンタが保持してい
るブロックアドレスを前記ブロックアドレスレジスタへ
転送させ、前記出力データレジスタに保持されたデータ
ブロックが転送されるようにブロックデータ書き込み要
求信号をアサートし、かつ前記蓄積データサイズを0に
リセットする機能を更に備えたことを特徴とするデータ
バッファ。 - 【請求項4】 請求項1〜3のいずれか1項に記載のデ
ータバッファにおいて、 前記シーケンスコントローラは、前記初期アドレスがN
バイト境界アドレス(Nで割り切れるアドレス)でない
場合には、前記ブロックサイズレジスタのブロックサイ
ズをMバイトに設定し、前記データバス上のMバイトの
データ入力が前記入力データレジスタに書き込まれる毎
に、前記入力データレジスタに蓄積されたMバイトのデ
ータブロックを前記出力データレジスタへ転送させ、前
記ブロックアドレスカウンタが保持しているブロックア
ドレスを前記ブロックアドレスレジスタへ転送させ、前
記出力データレジスタに保持されたMバイトのデータブ
ロックが転送されるようにブロックデータ書き込み要求
信号をアサートし、前記ブロックアドレスカウンタが保
持しているブロックアドレスをMバイトだけ更新させ、
かつ前記蓄積データサイズを0にリセットした後に、前
記ブロックアドレスがNバイト境界アドレスになった時
点で前記ブロックサイズレジスタのブロックサイズをN
バイトに変更する機能を更に備えたことを特徴とするデ
ータバッファ。 - 【請求項5】 請求項1〜3のいずれか1項に記載のデ
ータバッファにおいて、 前記シーケンスコントローラは、前記初期アドレスがN
バイト境界アドレス(Nで割り切れるアドレス)でない
場合には、前記ブロックアドレスカウンタが保持してい
るブロックアドレスと前記蓄積データサイズとの和がN
バイト境界アドレスになるのを待って、前記ブロックサ
イズレジスタのブロックサイズを設定し、前記入力デー
タレジスタに蓄積されたデータブロックを前記出力デー
タレジスタへ転送させ、前記ブロックアドレスカウンタ
が保持しているブロックアドレスを前記ブロックアドレ
スレジスタへ転送させ、前記出力データレジスタに保持
されたデータブロックが転送されるようにブロックデー
タ書き込み要求信号をアサートし、前記蓄積データサイ
ズを0にリセットし、かつ前記ブロックアドレスカウン
タが保持しているブロックアドレスを前記蓄積データサ
イズの値だけ更新させる機能を更に備えたことを特徴と
するデータバッファ。 - 【請求項6】 請求項1〜5のいずれか1項に記載のデ
ータバッファにおいて、 前記出力データレジスタは、複数のデータブロックを同
時に保持できる容量を有することを特徴とするデータバ
ッファ。 - 【請求項7】 請求項1〜6のいずれか1項に記載のデ
ータバッファにおいて、 前記シーケンスコントローラは、前記蓄積データサイズ
が既に最大値であるNバイトを示している場合には、前
記入力データレジスタへの書き込みを禁止するようにデ
ータ書き込み禁止信号を発生する機能を更に備えたこと
を特徴とするデータバッファ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001211710A JP2003030129A (ja) | 2001-07-12 | 2001-07-12 | データバッファ |
US10/193,277 US6801988B2 (en) | 2001-07-12 | 2002-07-12 | Data buffer for block unit data transfer to SDRAM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001211710A JP2003030129A (ja) | 2001-07-12 | 2001-07-12 | データバッファ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003030129A true JP2003030129A (ja) | 2003-01-31 |
Family
ID=19046974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001211710A Pending JP2003030129A (ja) | 2001-07-12 | 2001-07-12 | データバッファ |
Country Status (2)
Country | Link |
---|---|
US (1) | US6801988B2 (ja) |
JP (1) | JP2003030129A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012004791A (ja) * | 2010-06-16 | 2012-01-05 | Yokogawa Electric Corp | フィールド通信システム |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7415576B2 (en) * | 2002-09-30 | 2008-08-19 | Renesas Technology Corp. | Data processor with block transfer control |
US20050240717A1 (en) * | 2004-04-27 | 2005-10-27 | Via Technologies, Inc. | Interleaved Mapping Method of Block-Index-To-SDRAM-Address for Optical Storage (CD/DVD) System |
US8432409B1 (en) | 2005-12-23 | 2013-04-30 | Globalfoundries Inc. | Strided block transfer instruction |
US8368710B1 (en) * | 2005-12-29 | 2013-02-05 | Globalfoundries Inc. | Data block transfer to cache |
JP2015179328A (ja) * | 2014-03-18 | 2015-10-08 | 株式会社東芝 | データ転送装置、データ受信システムおよびデータ受信方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69735614T2 (de) | 1996-10-18 | 2006-09-07 | Matsushita Electric Industrial Co., Ltd., Kadoma | Datenübertragungsgerät und Datenübertragungssystem zur Arbitrierung von mehreren E/A Ports in DMA |
JPH10154125A (ja) | 1996-11-26 | 1998-06-09 | Toshiba Corp | Dmaデータ転送装置および同装置を使用した動画像復号化装置並びにdmaデータ転送制御方法 |
-
2001
- 2001-07-12 JP JP2001211710A patent/JP2003030129A/ja active Pending
-
2002
- 2002-07-12 US US10/193,277 patent/US6801988B2/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012004791A (ja) * | 2010-06-16 | 2012-01-05 | Yokogawa Electric Corp | フィールド通信システム |
Also Published As
Publication number | Publication date |
---|---|
US6801988B2 (en) | 2004-10-05 |
US20030014601A1 (en) | 2003-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101379524B1 (ko) | 디스플레이 파이프 내에서의 스트리밍 변환 | |
TWI744289B (zh) | 使用多個最後階層快取線提供記憶體帶寬壓縮之以一中央處理單元(cpu)為基礎之系統及方法 | |
US20180173623A1 (en) | Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compressed memory system to avoid stalling write operations | |
JP2017519286A (ja) | 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供 | |
JP2018503924A (ja) | 中央処理ユニット(cpu)ベースのシステム内の圧縮メモリコントローラ(cmc)による連続読取り動作を使用するメモリ帯域幅圧縮の提供 | |
US8880847B2 (en) | Multistream prefetch buffer | |
JP2001216194A (ja) | 演算処理装置 | |
TWI453584B (zh) | 處理非對準式記憶體存取的設備、系統及方法 | |
US10061698B2 (en) | Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur | |
JP2003030129A (ja) | データバッファ | |
US8850118B2 (en) | Circuit and method for dynamically changing reference value for address counter based on cache determination | |
JP4459641B2 (ja) | シーケンシャルバッファを内蔵してdspのデータアクセス性能を向上させるコンピュータシステム及びそのコンピュータシステムのアクセス方法 | |
US10152261B2 (en) | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system | |
JP2004240616A (ja) | メモリコントローラ及びメモリアクセス制御方法 | |
US7075546B2 (en) | Intelligent wait methodology | |
US11755498B2 (en) | Emulating scratchpad functionality using caches in processor-based devices | |
JPH08339331A (ja) | キャッシュメモリー | |
JP2000029788A (ja) | キャッシュメモリシステム及びそれに用いるキャッシュ制御方法並びにその制御プログラムを記録した記録媒体 | |
CN116383105A (zh) | 缓存管理方法、处理模块及电子设备 | |
JPH05210695A (ja) | データ処理装置 | |
JPH11328021A (ja) | データ記憶装置及びデータアクセス方法 | |
JP2000172563A (ja) | 部分キャッシュ・クリ―ニングを用いるコンピュ―タ回路システムと方法 | |
JP2008117108A (ja) | 半導体集積回路装置 | |
JPH07319800A (ja) | データ転送装置 |