JP2013061851A - Memory controller and simd type processor - Google Patents
Memory controller and simd type processor Download PDFInfo
- Publication number
- JP2013061851A JP2013061851A JP2011200529A JP2011200529A JP2013061851A JP 2013061851 A JP2013061851 A JP 2013061851A JP 2011200529 A JP2011200529 A JP 2011200529A JP 2011200529 A JP2011200529 A JP 2011200529A JP 2013061851 A JP2013061851 A JP 2013061851A
- Authority
- JP
- Japan
- Prior art keywords
- data
- read buffer
- address value
- processor
- address
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 232
- 238000007796 conventional method Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 25
- 239000011159 matrix material Substances 0.000 description 14
- 230000004044 response Effects 0.000 description 14
- 102220006254 rs267606667 Human genes 0.000 description 12
- 238000000034 method Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- CIWBSHSKHKDKBQ-JLAZNSOCSA-N Ascorbic acid Chemical compound OC[C@H](O)[C@H]1OC(=O)C(O)=C1O CIWBSHSKHKDKBQ-JLAZNSOCSA-N 0.000 description 3
- 230000002411 adverse Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Images
Landscapes
- Image Processing (AREA)
- Facsimile Image Signal Circuits (AREA)
Abstract
Description
本発明は、SIMD(Single Instruction-stream Multiple Data-stream)プロセッサのためのメモリコントローラ及び当該メモリコントローラを備えたSIMD型プロセッサに関する。 The present invention relates to a memory controller for a single instruction-stream multiple data-stream (SIMD) processor and a SIMD type processor including the memory controller.
近年、ディジタル複写機、プリンタ及びカメラなどの画像処理装置では、画素数の増加及び画像処理の多様化などにより画質の向上が図られている。このような画像処理装置では、複数の画素データに対して同一の処理を行うことが多いため、1つの演算命令により1つのデータを処理するSISD(Single Instruction-stream Single Data-stream)型のマイクロプロセッサより、1つの演算命令により複数のデータを並列処理するSIMD型のマイクロプロセッサ(以下、SIMD型プロセッサという。)が用いられることが多い。 In recent years, image processing apparatuses such as digital copying machines, printers, and cameras have improved image quality by increasing the number of pixels and diversifying image processing. In such an image processing apparatus, the same processing is often performed on a plurality of pixel data. Therefore, an SISD (Single Instruction-stream Single Data-stream) type micro processor that processes one data by one arithmetic instruction. In many cases, a processor uses a SIMD type microprocessor (hereinafter referred to as a SIMD type processor) that processes a plurality of data in parallel by one arithmetic instruction.
SIMD型プロセッサは、算術論理演算器(ALU(Arithmetic Logic Unit))と複数の汎用レジスタとをそれぞれ備えた複数のプロセッサエレメントと、そのプロセッサエレメントを制御するグローバルプロセッサとを備えて構成されている。プロセッサエレメントの個数は画像データの大きさに応じて決定され、これらの複数のプロセッサエレメントを、単一のグローバルプロセッサが、同時に演算処理を行うように制御している。具体的には、SIMD型プロセッサにおいて、各プロセッサエレメントは、画像データのうちの1画素の画素データの画像処理を行う。1画素に対応するプロセッサエレメントが複数あるため、複数の画素に対応する画素データが並列に演算処理される。このように、複数の画素データを同時に処理することで、画像処理の効率を高めている。 The SIMD type processor includes a plurality of processor elements each including an arithmetic logic unit (ALU (Arithmetic Logic Unit)) and a plurality of general-purpose registers, and a global processor that controls the processor elements. The number of processor elements is determined according to the size of the image data, and the plurality of processor elements are controlled so that a single global processor simultaneously performs arithmetic processing. Specifically, in a SIMD type processor, each processor element performs image processing of pixel data of one pixel of image data. Since there are a plurality of processor elements corresponding to one pixel, pixel data corresponding to the plurality of pixels are processed in parallel. Thus, the efficiency of image processing is increased by processing a plurality of pixel data simultaneously.
SIMD型プロセッサによって実行される画像処理の中には、ディザ処理のようなテーブルデータを扱う処理がある。通常、ディザ処理のためのディザテーブルデータなどのテーブルデータは、SIMD型プロセッサの外部メモリにあらかじめ格納されている。SIMD型プロセッサの外部に設けられた従来技術に係るメモリコントローラは、外部メモリからテーブルデータをリードし、各プロセッサエレメントの汎用レジスタに転送する。一方、グローバルプロセッサは各プロセッサエレメントの演算用のレジスタに画素データを格納し、汎用レジスタに転送されたテーブルデータから演算用レジスタに格納された画素データを減算するように各プロセッサエレメントを制御し、これによりディザ処理を実行できる。 Among the image processing executed by the SIMD type processor, there is processing for handling table data such as dither processing. Normally, table data such as dither table data for dither processing is stored in advance in an external memory of the SIMD type processor. The memory controller according to the related art provided outside the SIMD type processor reads the table data from the external memory and transfers it to the general-purpose register of each processor element. On the other hand, the global processor stores the pixel data in the calculation register of each processor element, controls each processor element to subtract the pixel data stored in the calculation register from the table data transferred to the general-purpose register, Thus, dither processing can be executed.
特許文献1及び2は、従来技術に係るメモリコントローラを開示している。また、特許文献3は、ディザマトリクスを格納する領域を削減できる従来技術に係る画像生成方法を開示している。
一般に、従来技術に係るSIMD型プロセッサは、メモリコントローラが外部メモリから読み出したテーブルデータを、1つの処理単位として処理される所定数(以下、SIMD数という。SIMD数はプロセッサエレメントの個数と等しい。)の画素データ単位又は1ライン分の画素データ単位に展開するように各プロセッサエレメントの汎用レジスタに格納するとき、プロセッサエレメントのシフト動作を利用したり、グローバルプロセッサから各汎用レジスタに同じデータを繰り返して転送したりしていた。この場合、各プロセッサエレメントへのテーブルデータの転送時間はSIMD数に比例して増加し、転送中にはSIMD型プロセッサでの演算が行えないという弊害が生じた。このため、SIMD型プロセッサの全体の処理時間を削減できなかった。 In general, the SIMD type processor according to the related art has a predetermined number (hereinafter referred to as SIMD number) in which table data read from the external memory by the memory controller is processed as one processing unit. The SIMD number is equal to the number of processor elements. ) When storing in the general-purpose register of each processor element so that it expands into a pixel data unit or one line of pixel data unit, use the shift operation of the processor element or repeat the same data from the global processor to each general-purpose register And was transferred. In this case, the transfer time of the table data to each processor element increases in proportion to the number of SIMDs, and there is an adverse effect that the operation in the SIMD type processor cannot be performed during the transfer. For this reason, the entire processing time of the SIMD type processor cannot be reduced.
本発明の目的は以上の問題点を解決し、画像処理などの所定の処理に用いられるSIMD型プロセッサ全体の処理時間を従来技術に比較して削減できるメモリコントローラと、当該メモリコントローラを備えたSIMD型プロセッサとを提供することにある。 The object of the present invention is to solve the above problems and to reduce the processing time of the entire SIMD type processor used for predetermined processing such as image processing as compared with the prior art, and SIMD including the memory controller. Providing a type processor.
本発明に係るメモリコントローラは、
記憶装置からのデータを順次それぞれ所定のアドレスに一時的に格納し、入力されるアドレス値のアドレスに格納されたデータを、SIMD型プロセッサの複数のプロセッサエレメントに転送するリードバッファと、
上記アドレス値を発生して上記リードバッファに出力するリードバッファコントローラとを備えたメモリコントローラにおいて、
上記リードバッファコントローラは、
上記リードバッファが上記各プロセッサエレメントに上記データを転送する毎に上記アドレス値をインクリメントして出力するリードバッファカウンタ回路と、
所定の最大アドレス値を格納するループレジスタと、
上記リードバッファカウンタ回路から出力されるアドレス値を上記最大アドレス値と比較し、上記アドレス値が上記最大アドレス値と一致したとき、上記リードバッファカウンタ回路をリセットするためのカウンタリセット信号を発生して上記リードバッファカウンタ回路に出力する比較器とを備えたことを特徴とする。
The memory controller according to the present invention includes:
A read buffer for temporarily storing data from the storage device sequentially at predetermined addresses, and transferring the data stored at the address of the input address value to a plurality of processor elements of the SIMD type processor;
In a memory controller including a read buffer controller that generates the address value and outputs the address value to the read buffer,
The read buffer controller
A read buffer counter circuit that increments and outputs the address value each time the read buffer transfers the data to the processor elements;
A loop register for storing a predetermined maximum address value;
The address value output from the read buffer counter circuit is compared with the maximum address value, and when the address value matches the maximum address value, a counter reset signal for resetting the read buffer counter circuit is generated. And a comparator for outputting to the read buffer counter circuit.
本発明に係るメモリコントローラによれば、リードバッファコントローラは、リードバッファが各プロセッサエレメントにデータを転送する毎にアドレス値をインクリメントして出力するリードバッファカウンタ回路と、所定の最大アドレス値を格納するループレジスタと、リードバッファカウンタ回路から出力されるアドレス値を最大アドレス値と比較し、アドレス値が最大アドレス値と一致したとき、リードバッファカウンタ回路をリセットするためのカウンタリセット信号を発生してリードバッファカウンタ回路に出力する比較器とを備える。従って、リードバッファに格納されたデータをプロセッサエレメントに繰り返して転送でき、当該転送中にプロセッサエレメントで他の演算処理を実行できるので、画像処理などの所定の処理に用いられるSIMD型プロセッサ全体の処理時間を従来技術に比較して削減できる。 According to the memory controller of the present invention, the read buffer controller stores a read buffer counter circuit that increments and outputs an address value each time the read buffer transfers data to each processor element, and a predetermined maximum address value. The address value output from the loop register and the read buffer counter circuit is compared with the maximum address value. When the address value matches the maximum address value, a counter reset signal is generated to reset the read buffer counter circuit and read. And a comparator for outputting to the buffer counter circuit. Accordingly, the data stored in the read buffer can be repeatedly transferred to the processor element, and other arithmetic processing can be executed by the processor element during the transfer, so that the entire SIMD type processor used for predetermined processing such as image processing is processed. Time can be reduced compared to the prior art.
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。 Hereinafter, embodiments according to the present invention will be described with reference to the drawings. In addition, in each following embodiment, the same code | symbol is attached | subjected about the same component.
第1の実施形態.
図1は、本発明の第1の実施形態に係るメモリコントローラ4と、SIMD型プロセッサ1と、DDR(Double-Data-Rate)メモリ3とを示すブロック図である。また、図2は、図1の各プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3をより詳細に示すブロック図であり、図3は、図1のメモリコントローラ4のリードバッファコントローラ10をより詳細に示すブロック図である。図1のSIMD型プロセッサ1は、ディジタル複写機、高性能プリンタ又はカメラなどの画像処理装置において、ディザ処理などの画像処理を行うためのマイクロプロセッサである。
First embodiment.
FIG. 1 is a block diagram showing a
図1において、SIMD型プロセッサ1は、複数(N+1)個のプロセッサエレメントPE0,PE1,…,PEN(Nは正の整数である。)と、グローバルプロセッサ2とを備えて構成される。また、各プロセッサエレメントPEn(n=0,1,…,N)は、複数(J+1)個の汎用レジスタ(以下、レジスタという。)R0,R1,…,RJ(Jは3以上の整数である。)と、算術論理演算器91と、算術論理演算器91による演算結果を示すデータを格納するアキュムレータ92とを備えて構成される。なお、各プロセッサエレメントPEn(n=0,1,…,N)には、固有のアドレスが割り当てられている。また、本実施形態において、各レジスタR0〜RJのサイズは8ビットである。
In FIG. 1, the
図3を参照して詳細後述するように、本実施形態に係るメモリコントローラ4は、DDRメモリ3からのデータを順次それぞれ所定のアドレスに一時的に格納し、入力されるアドレス値のアドレスに格納されたデータを、SIMD型プロセッサ1の複数のプロセッサエレメントPE0〜PENに転送するリードバッファRB0と、アドレス値C51を発生してリードバッファRB0に出力するリードバッファコントローラ10とを備えて構成される。
As will be described in detail later with reference to FIG. 3, the
ここで、リードバッファコントローラ10は、図3を参照して詳細後述するように、
(a)リードバッファRB0が各プロセッサエレメントPE0〜PENにデータを転送する毎にアドレス値C51をインクリメントして出力するリードバッファカウンタ回路51と、
(b)所定の最大アドレス値C52を格納するループレジスタと、
(c)リードバッファカウンタ回路51から出力されるアドレス値C51を最大アドレス値C52と比較し、アドレス値C51が最大アドレス値C52と一致したとき、リードバッファカウンタ回路51をリセットするためのカウンタリセット信号S53を発生してリードバッファカウンタ回路51に出力する比較器53とを備えたことを特徴としている。
Here, as will be described later in detail with reference to FIG.
(A) a read
(B) a loop register for storing a predetermined maximum address value C52;
(C) The address value C51 output from the read
さらに、リードバッファRB0は、DDRメモリ3からのディザテーブルデータの第1行の各列のしきい値データを順次それぞれ所定のアドレスに格納し、最大アドレス値C52は、リードバッファRB0に最後に格納されたしきい値データの格納アドレスの次のリードバッファRB0のアドレスに設定されたことを特徴としている。
Further, the read buffer RB0 sequentially stores the threshold data of each column of the first row of the dither table data from the
図1において、グローバルプロセッサ2は、当該グローバルプロセッサ2内のプログラムメモリに格納されたプログラムを実行することにより、各プロセッサエレメントPE0〜PEN及びSIMD型プロセッサ1の外部に設けられたメモリコントローラ4を制御する。ここで、グローバルプロセッサ2は、制御対象のプロセッサエレメントPEn(n=0,1,…,N)のアドレスを指定して、各プロセッサエレメントPEnを制御する。また、グローバルプロセッサ2は、各プロセッサエレメントPEn(n=0,1,…,N)を、レジスタR0〜RJのうちの所定の1つのレジスタからデータをリードして算術論理演算器91に出力し、算術論理演算器91による演算結果をアキュムレータ92及びレジスタR0〜RJのうちの所定の1つのレジスタに出力するように制御する。グローバルプロセッサ2は、プロセッサエレメントPE0〜PENを同時に同一の処理を並列に行うように制御し、これにより、複数のデータを並列処理する。
In FIG. 1, the
図2に示すように、各プロセッサエレメントPE0〜PENの4個のレジスタRj,Rj+1,Rj+2,Rj+3(jは、0以上J−3以下の所定の整数である。)は、メモリコントローラ4を介して、DDR、DDR2又はDDR3などの大容量メモリであるDDRメモリ3に接続されている。DDRメモリ3は、電源のオン時などの所定のタイミングにおいて、処理対象の画像データの種類(文字、写真、又は文字及び写真)及び画像処理の内容(ディザ処理、ぼかし処理、又はシャープネス処理など)毎に、画像処理のためのテーブルデータを格納する。
As shown in FIG. 2, the four registers Rj, Rj + 1, Rj + 2, Rj + 3 (j is a predetermined integer between 0 and J−3) of each of the processor elements PE0 to PEN are connected via the
ここで、ディザ処理及びディザ処理のためのディザテーブルデータを説明する。ディザ処理は、P階調の画像データをQ階調(Q<P)の画像データに変換する階調処理である。例えば、シアン、マゼンタ、イエロー及びブラックの各8ビットの画素データを含む多値の画像データ(1画素当たりのデータサイズは32ビットである。)を、シアン、マゼンタ、イエロー及びブラックの各2ビット、4ビット又は16ビットの画素データを含む2値、4値又は16値の印刷用の画像データ(1画素当たりのデータサイズは4ビット、8ビット又は16ビットである。)に変換するとき、ディザ処理が行われる。図4は、図1のDDRメモリ3に格納される4×4のマトリクスサイズを有するディザテーブルデータの構成を示すブロック図である。図4の横方向は画像データの主走査方向に対応しており、縦方向は画像データの副走査方向に対応している。図4のディザテーブルデータの各セルA〜Pには各画素位置で用いられるしきい値データが格納される。
Here, dither processing and dither table data for the dither processing will be described. The dither processing is gradation processing that converts image data of P gradation into image data of Q gradation (Q <P). For example, multi-valued image data including 8-bit pixel data of cyan, magenta, yellow, and black (the data size per pixel is 32 bits), and 2 bits of cyan, magenta, yellow, and black. When converting to binary, 4-value, or 16-value printing image data including 4-bit or 16-bit pixel data (the data size per pixel is 4, 8, or 16 bits), Dither processing is performed. FIG. 4 is a block diagram showing the configuration of dither table data having a 4 × 4 matrix size stored in the
図5(a)は、図1のDDRメモリ3に格納されるディザテーブルデータの一例を示すブロック図である。図5(a)において、ディザテーブルデータの各セルには、256階調の(すなわち、8ビットの)画素データを2値化するためのしきい値データが格納されている。また、図5(b)は、図1のSIMD型プロセッサ1により処理される画像データの一例を示すブロック図であり、処理対象の画像データは、所定のカラーの8ビットの画素データを含む。図5(b)の画像データを図5(a)のディザテーブルデータを用いて2値化する場合、各画素位置において、画素データ値はしきい値データ値と比較される。そして、画素データ値がしきい値データ以上であるときは、当該画素位置における2値化結果は「1」となり、画素データ値がしきい値データ未満であるときは、当該画素位置における2値化結果は「0」となる。このため、図5(b)の画像データを図5(a)のディザテーブルデータを用いて2値化すると、図5(c)の2値化結果データが得られる。そして、2値化結果が「1」の画素位置にインクを置かず白色に設定し、2値化結果が「0」の画素位置にインクをおいて黒色に設定することにより、例えば図5(d)のような、白黒の印刷イメージを得ることができる。
FIG. 5A is a block diagram showing an example of dither table data stored in the
図6は、図1のSIMD型プロセッサ1により図4のディザテーブルデータを用いてディザ処理を行うとき、各プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3に格納されるしきい値データを示すブロック図である。グローバルプロセッサ2は、画像データに対して図4のディザテーブルデータを用いてディザ処理を行うとき、始めに、プロセッサエレメントPE0〜PENのレジスタRjにディザテーブルデータ第1行の各列のセルA,B,C,Dの各しきい値データを繰り返して格納し、プロセッサエレメントPE0〜PENのレジスタRj+1にディザテーブルデータの第2行の各列のセルE,F,G,Hの各しきい値データを繰り返して格納し、プロセッサエレメントPE0〜PENのレジスタRj+2にディザテーブルデータの第3行の各列のセルI,J,K,Lの各しきい値データを繰り返して格納し、プロセッサエレメントPE0〜PENのレジスタRj+3にディザテーブルデータの第4行の各列のセルM,N,O,Pの各しきい値データを繰り返して格納するように、メモリコントローラ4を制御する。なお、グローバルプロセッサ2によるメモリコントローラ4の制御方法は後述する。
FIG. 6 is a block diagram showing threshold data stored in the registers Rj to Rj + 3 of the processor elements PE0 to PEN when the dither processing is performed by the
さらに、グローバルプロセッサ2は、ディザ処理において、処理対象の1ライン目の画像データを各プロセッサエレメントPE0〜PENのアキュムレータ92に格納する。そして、グローバルプロセッサ2は、アキュムレータ92に格納された画素データ値から、レジスタRjに格納されたしきい値データ値を減算し、減算結果が正であれば1を出力し、減算結果が負であれば0を出力するように各算術論理演算器91を制御する。これにより、最大でプロセッサエレメントPE0〜PENの個数(N+1)と同一の数の画素データに対してディザ処理を行う。以下同様に、レジスタRj+1,Rj+2,Rj+3に格納されたしきい値データを用いて2ライン目、3ライン目及び4ライン目の画像データに対してディザ処理を行う。また、5ライン目以降の画像データを処理するときは、Rj,Rj+1,Rj+2,Rj+3に格納されたしきい値データを繰り返して使用する。
Furthermore, the
図2に戻り参照すると、メモリコントローラ4は、SIMD型プロセッサ1とDDRメモリ3との間のインターフェース処理を行うための回路であって、DDRアドレスコントローラ41と、リードバッファRB0,RB1,RB2,RB3と、ライトバッファWB0,WB1,WB2,WB3と、リードバッファRB0,RB1,RB2,RB3をそれぞれ制御するリードバッファコントローラ10,11,12,13と、ライトバッファWB0,WB1,WB2,WB3を制御するライトバッファコントローラ42とを備えて構成される。
Referring back to FIG. 2, the
図2において、リードバッファRB0及びライトバッファWB0は、8ビットのデータバスDP0を介してプロセッサエレメントPE0〜PENのレジスタRjに接続され、8ビットのデータバスDM0を介してDDRメモリ3に接続されている。また、リードバッファRB1及びライトバッファWB1は、8ビットのデータバスDP1を介してプロセッサエレメントPE0〜PENのレジスタRj+1に接続され、8ビットのデータバスDM1を介してDDRメモリ3に接続されている。さらに、リードバッファRB2及びライトバッファWB2は、8ビットのデータバスDP2を介してプロセッサエレメントPE0〜PENのレジスタRj+2に接続され、8ビットのデータバスDM2を介してDDRメモリ3に接続されている。またさらに、リードバッファRB3及びライトバッファWB3は、8ビットのデータバスDP3を介してプロセッサエレメントPE0〜PENのレジスタRj+3に接続され、8ビットのデータバスDM3を介してDDRメモリ3に接続されている。
In FIG. 2, a read buffer RB0 and a write buffer WB0 are connected to a register Rj of processor elements PE0 to PEN via an 8-bit data bus DP0, and connected to a
図2において、グローバルプロセッサ2は、SIMD型プロセッサ1からDDRメモリ3へのデータ転送(以下、ライト転送という。)時に、DDRメモリ3へのライト時のライト開始のアドレスとデータ転送数(バースト数)とを含むライト転送開始指令を、DDRアドレスコントローラ41及びライトバッファコントローラ42に出力する。これに応答して、DDRアドレスコントローラ41は、DDRメモリ3のライト対象のアドレスを、ライト開始のアドレスから、当該アドレスにデータ転送数を加算したアドレスまで、1ずつインクリメントする。また、ライトバッファコントローラ42は、ライト転送開始指令に応答して、プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3からデータをリードしてライトバッファWB0〜WB3に転送し、転送されたデータをバッファリング(一時的に格納)した後に、DDRメモリ3のDDRアドレスコントローラ41により指定されたアドレスに転送してライトするように、ライトバッファWB0〜WB3を制御する。従って、1回のライト転送により、SIMD型プロセッサ1からDDRメモリ3に4×(N+1)個のデータが転送される。本実施形態では、レジスタRj〜Rj+3のサイズはそれぞれ8ビットであるので、SIMD型プロセッサ1とDDRメモリ3との間のデータ転送幅は32ビットである。なお、グローバルプロセッサ2は、プロセッサエレメントPE0〜PENのうちのライト転送の対象となるプロセッサエレメントを示す制御信号をプロセッサエレメントPE0〜PENに出力することにより、ライト転送の対象となるプロセッサエレメントを順次指定する。
In FIG. 2, the
次に、図3を参照してリードバッファコントローラ10の構成及び動作を説明する。なお、リードバッファコントローラ11〜13はリードバッファコントローラ10と同様に構成される。図3において、リードバッファコントローラ10は、リードバッファカウンタ回路51と、ループレジスタ52と、比較器53とを備えて構成される。ここで、ループレジスタ52は、所定の最大アドレス値C52をあらかじめ格納し、当該最大アドレス値C52を比較器53に出力する。また、リードバッファカウンタ回路51は、グローバルプロセッサ2から、SIMD型プロセッサ1へのデータ転送を指示するリード転送開始指令を受信すると、アドレス値C51を0にリセットし、リードバッファRB0がSIMD型プロセッサ1に1つのデータを転送する毎に、アドレス値C51を1だけインクリメントしてリードバッファRB0と比較器53とに出力する。
Next, the configuration and operation of the read
さらに、図3において、比較器53は、アドレス値C51を最大アドレス値C52と比較し、アドレス値C51が最大アドレス値C52と一致したときにカウンタリセット信号S53を発生してリードバッファカウンタ回路51に出力する。リードバッファカウンタ回路51は、カウンタリセット信号S53に応答してアドレス値C51を0にリセットする。また、リードバッファRB0は、アドレス値C51のアドレスに格納されたしきい値データを、所定の転送タイミングにおいてデータバスDP0に出力する。
Further, in FIG. 3, the
次に、SIMD型プロセッサ1によるディザ処理時の、DDRメモリ3からSIMD型プロセッサ1への図6のディザテーブルデータの転送(以下、リード転送という。)方法を説明する。図2において、グローバルプロセッサ2は、ディザ処理の開始時に、DDRメモリ3に格納されたディザテーブルデータの第1行の各列のセルA,B,C,Dの各しきい値データをリードバッファRB0のアドレス0,1,2,3に順次それぞれ格納し、ディザテーブルデータの第2行の各列のセルE,F,G,Hの各しきい値データをリードバッファRB1のアドレス0,1,2,3に順次それぞれ格納し、ディザテーブルデータの第3行の各列のセルI,J,K,Lの各しきい値データをリードバッファRB2アドレス0,1,2,3に順次それぞれ格納し、ディザテーブルデータの第3行の各列のセルM,N,O,Pの各しきい値データを順次それぞれリードバッファRB3のアドレス0,1,2,3に格納するように、メモリコントローラ4を制御する。また、図3において、最大アドレス値C52は、各リードバッファRB0〜RB3に最後に格納されたしきい値データの格納アドレス(3である。)の次のアドレスである4に設定される。
Next, a method of transferring the dither table data in FIG. 6 from the
次に、グローバルプロセッサ2は、リードバッファコントローラ10〜13の各リードバッファカウンタ回路51にリード転送開始指令を出力する。図3において、リードバッファコントローラ10のリードバッファカウンタ回路51は、グローバルプロセッサ2からのリード転送開始指令に応答して、アドレス値C51を0にリセットしてリードバッファRB0及び比較器53に出力する。そして、リードバッファRB0は、第1の転送タイミングにおいて、アドレス0に格納されたセルAのしきい値データをデータバスDP0に出力する。グローバルプロセッサ2は、データバスDP0に出力されたセルAのしきい値データを、プロセッサエレメントPE0のレジスタRjに格納するように制御する。さらに、リードバッファカウンタ回路51はアドレス値C51を1だけインクリメントする。
Next, the
次に、リードバッファカウンタ回路51はアドレス値C51(1である。)をリードバッファRB0及び比較器53に出力する。そして、リードバッファRB0は、第2の転送タイミングにおいて、アドレス1に格納されたセルBのしきい値データをデータバスDP0に出力する。グローバルプロセッサ2は、データバスDP0に出力されたセルBのしきい値データを、プロセッサエレメントPE1のレジスタRjに格納するように制御する。さらに、リードバッファカウンタ回路51はアドレス値C51を1だけインクリメントする。
Next, the read
次に、リードバッファカウンタ回路51はアドレス値C51(2である。)をリードバッファRB0及び比較器53に出力する。そして、リードバッファRB0は、第3の転送タイミングにおいて、アドレス2に格納されたセルCのしきい値データをデータバスDP0に出力する。グローバルプロセッサ2は、データバスDP0に出力されたセルCのしきい値データを、プロセッサエレメントPE2のレジスタRjに格納するように制御する。さらに、リードバッファカウンタ回路51はアドレス値C51を1だけインクリメントする。
Next, the read
次に、リードバッファカウンタ回路51はアドレス値C51(3である。)をリードバッファRB0及び比較器53に出力する。そして、リードバッファRB0は、第4の転送タイミングにおいて、アドレス3に格納されたセルDのしきい値データをデータバスDP0に出力する。グローバルプロセッサ2は、データバスDP0に出力されたセルDのしきい値データを、プロセッサエレメントPE3のレジスタRjに格納するように制御する。さらに、リードバッファカウンタ回路51はアドレス値C51を1だけインクリメントする。この結果、アドレス値C51は4になり最大アドレス値C52と一致するので、比較器53はカウンタリセット信号S53を発生してリードバッファカウンタ回路51に出力する。これに応答して、リードバッファカウンタ回路51はアドレス値C51をゼロにリセットする。
Next, the read
次に、リードバッファカウンタ回路51はアドレス値C51(0である。)をリードバッファRB0及び比較器53に出力する。従って、リードバッファRB0は、第5の転送タイミングにおいて、アドレス0に格納されたセルAのしきい値データをデータバスDP0に出力する。以下同様に、リードバッファRB0のアドレス0,1,2,3にそれぞれ格納されたセルA,B,C,Dのしきい値データは、セルA,B,C,D,A,B,C,…のように、繰り返してデータバスDP0に出力され、SIMD型プロセッサ1のプロセッサエレメントPE0〜PENのレジスタRjに格納される(図6参照。)。
Next, the read
図2において、リードバッファコントローラ11は、リードバッファコントローラ10と同様に、ディザテーブルデータのセルE,F,G,Hのしきい値データをプロセッサエレメントPE0〜PENの各レジスタRj+1に繰り返して転送する。また、リードバッファコントローラ12は、リードバッファコントローラ10と同様に、ディザテーブルデータのセルI,J,K,Lのしきい値データをプロセッサエレメントPE0〜PENの各レジスタRj+2に繰り返して転送する。さらに、リードバッファコントローラ13は、リードバッファコントローラ10と同様に、ディザテーブルデータのセルM,N,O,Pのしきい値データをプロセッサエレメントPE0〜PENの各レジスタRj+3に繰り返して転送する。最後に、グローバルプロセッサ2は、プロセッサエレメントPENのレジスタRj〜Rj+3にしきい値データを格納すると、SIMD型プロセッサ1へのリード転送を終了するようにメモリコントローラ4を制御する。
In FIG. 2, as with the read
以上説明したように、本実施形態によれば、DDRメモリ3に格納されたディザテーブルデータの1行目のセルA〜Dの4個しきい値データをリードバッファRB0に転送する。そして、リードバッファRB0に格納された4個のしきい値データを繰り返してデータバスDP0を介してプロセッサエレメントPE0〜PENのレジスタRjに出力する。このとき、プロセッサエレメントPE0〜PENの個数(N+1)が352である場合、352をディザマトリクスの列数4で割った剰余はゼロであるので、セルDのしきい値データが、リードバッファRB0からSIMD型プロセッサ1に最後に転送される。また、リードバッファRB0からSIMD型プロセッサ1に転送されたしきい値データのセット数は88である。このため、ディザテーブルデータの各セルA〜Pのしきい値データは、図6に示すように、各プロセッサエレメントPE0〜PENのレジスタRj,Rj+1,Rj+2,Rj+3に繰り返して格納される。
As described above, according to the present embodiment, the four threshold data of the cells A to D in the first row of the dither table data stored in the
以上説明したように、本実施形態によれば、メモリコントローラ4からSIMD型プロセッサ1への1回のリード転送により、4×4のマトリクスサイズを有するディザテーブルデータを、メモリコントローラ4からSIMD型プロセッサ1に転送できる。
As described above, according to the present embodiment, dither table data having a matrix size of 4 × 4 is transferred from the
なお、リードバッファRB0,RB1,RB2,RB3のサイズは、DDRメモリ3に格納されたディザテーブルデータの列数と同一の個数のしきい値データを格納できるサイズ(本実施形態の場合、8ビット×4である。)以上であればよい。また、アドレス値C51のビット数はリードバッファRB0,RB1,RB2,RB3のサイズに依存する。例えば、リードバッファRB0,RB1,RB2,RB3のサイズが8ビット×352の場合、アドレス値C51のビット数は9ビット(29=512>352)以上であればよい。さらに、ループレジスタ52のビット数はリードバッファカウンタ回路51のビット数と同一、又は最大アドレス値C52を格納できるビット数であればよい。
The size of the read buffers RB0, RB1, RB2, and RB3 is a size that can store the same number of threshold data as the number of columns of the dither table data stored in the DDR memory 3 (in this embodiment, 8 bits). X4.) It is sufficient if it is above. The number of bits of the address value C51 depends on the size of the read buffers RB0, RB1, RB2, and RB3. For example, when the size of the read buffers RB0, RB1, RB2, and RB3 is 8 bits × 352, the number of bits of the address value C51 may be 9 bits (2 9 = 512> 352) or more. Furthermore, the number of bits of the
なお、リードバッファRB0〜RB3からSIMD型プロセッサ1にしきい値データが繰り返して転送されている間は、DDRメモリ3から各リードバッファRB0〜RB3のアドレス4以降に、ディザテーブルデータ以外のデータが転送される。しかしながら、各リードバッファRB0〜RB3のアドレス0〜3のみからSIMD型プロセッサ1へのデータ転送が行われるので、問題は生じない。
Note that while the threshold data is repeatedly transferred from the read buffers RB0 to RB3 to the
以上説明したように、本実施形態によれば、プロセッサエレメントPE0〜PENの各算術論理演算器91がレジスタR0〜RJのうちレジスタRj〜Rj+3以外のレジスタに格納されたデータを用いて演算を行っているときに、リードバッファRB0〜RB3から各プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3にしきい値データを並行して転送できる。従って、従来技術に比較してSIMD型プロセッサ1全体の処理時間を削減できる。
As described above, according to the present embodiment, the arithmetic logic units 91 of the processor elements PE0 to PEN perform calculations using data stored in registers other than the registers Rj to Rj + 3 among the registers R0 to RJ. The threshold data can be transferred in parallel from the read buffers RB0 to RB3 to the registers Rj to Rj + 3 of the processor elements PE0 to PEN. Therefore, the processing time of the entire
また、一般に、従来技術に係るメモリコントローラはリードバッファカウンタ回路51を備えているので、従来技術に係るメモリコントローラにループレジスタ52及び比較器53を設けるだけで、本実施形態に係るメモリコントローラ4を実現できる。
In general, since the memory controller according to the conventional technique includes the read
第2の実施形態.
図7は、本発明の第2の実施形態に係るメモリコントローラ4Aの構成を示すブロック図である。図7において、メモリコントローラ4Aは、図3のメモリコントローラ4に比較して、DDRコントローラ45をさらに備え、リードバッファコントローラ10,11,12,13に代えてリードバッファコントローラ10A,11A,12A,13Aを備えた点が異なる。なお、リードバッファコントローラ11A,12A,13Aはリードバッファコントローラ10Aと同様に構成されるので、図示及び説明を省略する。
Second embodiment.
FIG. 7 is a block diagram showing a configuration of a memory controller 4A according to the second embodiment of the present invention. 7, the memory controller 4A further includes a
図7において、リードバッファコントローラ10Aは、リードバッファカウンタ回路51と、ループレジスタ52と、比較器53とを備えて構成される。ここで、リードバッファカウンタ回路51は、図3のメモリコントローラ4のリードバッファカウンタ回路51と同様に、グローバルプロセッサ2からリード転送開始指令を受信すると、アドレス値C51を0にリセットし、リードバッファRB0からSIMD型プロセッサ1に1つのデータが転送される毎に、アドレス値C51を1だけインクリメントしてリードバッファRB0と比較器53とに出力する。また、ループレジスタ52は、図3のメモリコントローラ4のループレジスタ52と同様に、所定の最大アドレス値C52をあらかじめ格納し、比較器53に出力する。さらに、比較器53は、アドレス値C51を最大アドレス値C52と比較し、アドレス値C51が最大アドレス値C52と一致したときにカウンタリセット信号S53を発生してリードバッファカウンタ回路51に出力すると、DDRコントローラ45とに出力する。
In FIG. 7, the
図7において、DDRコントローラ45は、カウンタリセット信号S53に応答して、DDRメモリ3からリードバッファRB0へのデータ転送を停止させるためのストップ信号S45を発生し、DDRメモリ3に出力する。これに応答して、DDRメモリ3はリードバッファRB0へのデータ転送を停止する。
In FIG. 7, the
一般に、DDRメモリ3は所定のデータ群を連続して転送するバースト転送を行うので、ストップ信号S45に応答してリアルタイムでは転送を停止できない(オーバーランする)。しかしながら、本実施形態によれば、DDRメモリ3がプロセッサエレメントPE0〜PENの個数(N+1)分の最大のデータ数のデータ転送を行っている場合であっても、リードバッファRB0へのデータ転送を停止できるので、第1の実施形態に比較して、DDRメモリ3からメモリコントローラ4へのディザテーブルデータ以外のデータの余分な転送を大幅に削減できる。このため、メモリコントローラ4AからDDRメモリ3へのアクセス回数が削減され、SIMD型プロセッサ1を搭載した装置の消費電流を削減できる。また、メモリコントローラ4AからSIMD型プロセッサ1へのリード転送を行っているときに、SIMD型プロセッサ1以外の回路からDDRメモリ3にアクセスできるので、第1の実施形態に比較して、SIMD型プロセッサ1を搭載した装置の処理速度を向上できる。
In general, since the
第3の実施形態.
上述した各実施形態では、プロセッサエレメントPE0〜PENの個数(N+1)がDDRメモリ3に格納されたディザテーブルデータの列数で割り切れる場合のリード転送を説明した。しかしながら、1ライン分の画像データに含まれる画素データの数がプロセッサエレメントPE0〜PENの個数(N+1)よりも多く、かつ個数(N+1)がディザテーブルデータの列数で割り切れないときは、以下の問題が生じる。
Third embodiment.
In each of the above-described embodiments, the read transfer in the case where the number (N + 1) of the processor elements PE0 to PEN is divisible by the number of columns of the dither table data stored in the
例えば、1ライン分の画像データに含まれる画素データの数が700個であり、プロセッサエレメントPE0〜PENの個数が350個であり、ディザテーブルデータの列数が4であるとき、1ライン分の画像データの前半の350個の画素データに対してディザ処理を行うときは、プロセッサエレメントPE0〜PE349の各レジスタRjに、ディザテーブルデータのセルA,B,C,D,A,B…,A,Bのようにしきい値データが格納される。次に、1ライン分の画像データの後半の350個の画素データに対してディザ処理を行うときは、プロセッサエレメントPE0〜PE351の各レジスタRjに、ディザテーブルデータのセルC,D,A,B,C,D,…のしきい値データを格納する必要がある。しかしながら、上述した実施形態の場合、メモリコントローラ4及び4AからSIMD型プロセッサ1へのリード転送開始時のリードバッファRB0〜RB3のアドレスは0であるので、プロセッサエレメントPE0のレジスタRjには、ディザテーブルデータのセルAのデータし格納できない。このため、1ライン分の画像データの後半の350個の画素データに対してディザ処理を行えないという問題がある。本実施形態はこの問題を解決することを目的とする。
For example, when the number of pixel data included in image data for one line is 700, the number of processor elements PE0 to PEN is 350, and the number of columns of dither table data is 4, the data for one line When dither processing is performed on 350 pixel data in the first half of the image data, cells A, B, C, D, A, B..., A of dither table data are stored in the registers Rj of the processor elements PE0 to PE349. , B are stored as threshold data. Next, when dither processing is performed on 350 pixel data in the latter half of the image data for one line, cells C, D, A, and B of dither table data are stored in the registers Rj of the processor elements PE0 to PE351. , C, D,... Need to be stored. However, in the above-described embodiment, the address of the read buffers RB0 to RB3 at the start of read transfer from the
図8は、本発明の第3の実施形態に係るメモリコントローラ4Bの構成を示すブロック図である。本実施形態に係るメモリコントローラ4Bは、図3のメモリコントローラ4に比較して、リードバッファコントローラ10,11,12,13に代えてリードバッファコントローラ10B,11B,12B,13Bを備えた点が異なる。なお、リードバッファコントローラ11B,12B,13Bはリードバッファコントローラ10Bと同様に構成されるので、図示及び説明を省略する。
FIG. 8 is a block diagram showing the configuration of the memory controller 4B according to the third embodiment of the present invention. The memory controller 4B according to the present embodiment is different from the
図8において、リードバッファコントローラ10Bは、リードバッファコントローラ10に比較して、リセット値レジスタ54及びマルチプレクサ55を備えたリセット値設定回路56をさらに備えたことを特徴とする。図8において、リセット値レジスタ54は、リセット値0,1,2,3をあらかじめ格納し、マルチプレクサ55に出力する。また、グローバルプロセッサ2は、メモリコントローラ4BからSIMD型プロセッサ1へのリード転送の開始時に、リードバッファRB0からSIMD型プロセッサ1へのデータ転送を指示しかつリセット値を指定するリード転送開始指令をマルチプレクサ55に出力する。これに応答して、マルチプレクサ55は、リセット値レジスタ54からのリセット値0〜3のうち、リード転送開始指令に含まれるリセット値をリセット値C55としてリードバッファカウンタ回路51に出力する。
8, the
また、図8において、リードバッファカウンタ回路51は、メモリコントローラ4BからSIMD型プロセッサ1へのリード転送の開始時に、アドレス値C51をマルチプレクサ55からのリセット値C55にリセットする。従って、本実施形態によれば、グローバルプロセッサ2は、メモリコントローラ4BからSIMD型プロセッサ1へのリード転送開始時に、リードバッファカウンタ回路51のアドレス値C51を所望の値にリセットできる。このため、リード転送開始時に、リードバッファカウンタ回路51のアドレス値C51が例えば2にリセットされると、リードバッファRB0のアドレス2に格納されたディザテーブルデータのセルCのしきい値データから、セルD,A,B,C,D,A…のしきい値データが順次繰り返して転送される。このため、上述した問題を解決できる。
In FIG. 8, the read
一般に、SIMD型プロセッサ1のプロセッサエレメントPE0〜PENの個数(N+1)は、ディザテーブルデータの列数で割り切れることが多い。しかしながら、ディザテーブルデータのマトリクスサイズが大きくなるほど(例えば、64×64など。)、SIMD型プロセッサ1のプロセッサエレメントPE0〜PENの個数(N+1)がディザテーブルデータの列数で割り切れない可能性が高くなり、このような場合、本実施形態に係るメモリコントローラ4Bは有効である。
In general, the number (N + 1) of processor elements PE0 to PEN of the
なお、本実施形態においてリセット値設定回路56は図8に示した構成を有したが、本発明はこれに限られず、リードバッファコントローラ51に対して任意のリセット値C55を出力する構成を有していればよい。例えば、グローバルプロセッサ2を、リード転送終了時のリードバッファカウンタ回路51のアドレス値C51をリセット値トレジスタに転送するようにリードバッファコントローラ51を制御するように構成し、リセット値設定回路を、リード転送開始時に、リセット値トレジスタに格納されたリセット値をリセット値C55としてリードバッファカウンタ回路51に出力するように構成してもよい。また、ユーザがプログラムでリセット値レジスタに所望のリセット値を設定し、リセット値設定回路を、ユーザがプログラムで設定可能なリセット値を格納するオフセットレジスタを備えるように構成してもよい。
In the present embodiment, the reset
また、第2の実施形態に係るメモリコントローラ4Aと同様に、カウンタリセット信号S53に基づいてストップ信号を発生してDDRメモリ3に出力してもよい。
Further, similarly to the memory controller 4A according to the second embodiment, a stop signal may be generated based on the counter reset signal S53 and output to the
第4の実施形態.
上述した各実施形態において、SIMD型プロセッサ1とメモリコントローラ4,4A,4Bとは、4本のデータバスDP0〜DP3を介して接続された。このため、ディザテーブルデータの行数が4であるときは、メモリコントローラ4,4A,4BからSIMD型プロセッサ1への1回のリード転送で、ディザテーブルデータの全てのセルA〜Pのしきい値データを、図6に示すようにプロセッサエレメントPE0〜PENのレジスタRj〜Rj+3に格納できた。
Fourth embodiment.
In each of the above-described embodiments, the
上述した各実施形態において、例えば8×8のマトリクスサイズを有するディザテーブルデータを用いる場合、メモリコントローラ4,4A又は4Bと、SIMD型プロセッサ1はとの間で以下のようなリード転送が行われる。図10は、図9のDDRメモリ3に格納される8×8のマトリクスサイズを有するディザテーブルデータと、当該ディザテーブルデータを用いてディザ処理を行うとき、各プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3に格納されるしきい値データとを示すブロック図である。なお、図10のディザテーブルにおいて、各セル内の数字はセル番号を示す。
In each of the above-described embodiments, for example, when using dither table data having a matrix size of 8 × 8, the following read transfer is performed between the
例えば、第1の実施形態の場合、図10において、始めに、DDRメモリ3からメモリコントローラ4(図2参照。)のリードバッファRB0にディザテーブルデータのセル1〜8のしきい値データを転送し、リードバッファRB1にディザテーブルデータのセル9〜16のしきい値データを転送し、リードバッファRB2にディザテーブルデータのセル17〜24のしきい値データを転送し、リードバッファRB3にディザテーブルデータのセル25〜32のしきい値データを転送する。そして、リードバッファRB0〜RB3に格納された各しきい値データをプロセッサエレメントPE0〜PENの各レジスタRj〜Rj+3に繰り返して転送する。そして、グローバルプロセッサ2は、1ライン目〜4ライン目の画像データに対して、プロセッサエレメントPE0〜PENの各レジスタRj〜Rj+3に格納されたしきい値データを用いてディザ処理を行う。
For example, in the case of the first embodiment, in FIG. 10, the threshold data of the dither
次に、図10において、DDRメモリ3からメモリコントローラ4のリードバッファRB0にディザテーブルデータのセル33〜40のしきい値データを転送し、リードバッファRB1にディザテーブルデータのセル41〜48のしきい値データを転送し、リードバッファRB2にディザテーブルデータのセル49〜56のしきい値データを転送し、リードバッファRB3にディザテーブルデータのセル57〜64のしきい値データを転送する。そして、リードバッファRB0〜RB3に格納された各しきい値データをプロセッサエレメントPE0〜PENの各レジスタRj〜Rj+3に繰り返して転送する。そして、グローバルプロセッサ2は、5ライン目〜8ライン目の画像データに対して、プロセッサエレメントPE0〜PENの各レジスタRj〜Rj+3に格納されたしきい値データを用いてディザ処理を行う。従って、DDRメモリ3からメモリコントローラ4へのリード転送を2回行う必要があった。本実施形態は、上記各実施形態に比較して、DDRメモリ3からメモリコントローラ4への転送回数を削減することを目的とする。
Next, in FIG. 10, the threshold data of the dither
図9は、本発明の第4の実施形態に係るメモリコントローラ4Cの構成を示すブロック図である。図9において、メモリコントローラ4Cは、図3のメモリコントローラ4に比較して、リードバッファコントローラ10,11,12,13に代えてリードバッファコントローラ10C,11C,12C,13Cを備えて構成される。ここで、リードバッファコントローラ10Cは、リードバッファカウンタ回路51と、ループレジスタ52Aと、比較器53と、オフセット値レジスタ57及びマルチプレクサ58を備えたオフセット値設定回路60と、加算器C59とを備えて構成される。また、リードバッファコントローラ11C,12C,13Cはリードバッファコントローラ10Cと同様に構成されるので、図示及び説明を省略する。
FIG. 9 is a block diagram showing a configuration of a memory controller 4C according to the fourth embodiment of the present invention. In FIG. 9, the memory controller 4C includes read buffer controllers 10C, 11C, 12C, and 13C instead of the read
また、図9において、グローバルプロセッサ2は、メモリコントローラ4CからSIMD型プロセッサ1へのリード転送の開始時に、リードバッファRB0からSIMD型プロセッサ1へのデータ転送を指示しかつオフセット値及び最大アドレス値を指定するリード転送開始指令をマルチプレクサ58と、リードバッファカウンタ回路51と、ループレジスタ52Aとに出力する。オフセット値レジスタ57は、オフセット値0及び8をあらかじめ格納し、マルチプレクサ58に出力する。また、マルチプレクサ58は、オフセット値レジスタ57からのオフセット値のうち、グローバルプロセッサ2からのリード転送開始指令に含まれるオフセット値を、オフセット値C58として加算器59に出力する。
In FIG. 9, the
図9において、ループレジスタ52Aは、グローバルプロセッサ2からのリード転送開始指令に含まれる最大アドレス値を格納し、最大アドレス値C52Aとして比較器53に出力する。リードバッファカウンタ回路51は、グローバルプロセッサ2からのリード転送開始指令に応答してアドレス値C51を0にリセットし、リードバッファRB0がSIMD型プロセッサ1に1つのデータを転送する毎に、アドレス値C51を1だけインクリメントして加算器59に出力する。さらに、加算器59は、リードバッファカウンタ回路51からのアドレス値C51にオフセット値レジスタ57からのオフセット値C58を加算し、加算結果の加算値をアドレス値C59としてリードバッファRB0と比較器53とに出力する。これに応答して、リードバッファRB0は、アドレス値C59を有するアドレスに格納されたしきい値データをデータバスDP0に出力する。また、比較器53は、アドレス値C59を最大アドレス値C52Aと比較し、アドレス値C59が最大アドレス値C52Aと一致したとき、カウンタリセット信号S53を発生してリードバッファカウンタ回路51に出力する。これに応答して、リードバッファカウンタ回路51はアドレス値C51を0にリセットする。
In FIG. 9, the loop register 52A stores the maximum address value included in the read transfer start command from the
次に、図11を参照して、図10の8×8のマトリクスサイズを有するディザテーブルテータを用いてディザ処理を行うときのグローバルプロセッサ2及びメモリコントローラ4Cの動作を説明する。図11は、図10のDDRメモリ3に格納されているディザテーブルデータと、図9のリードバッファRB0〜RB3へのしきい値データの格納状態と、オフセット値C58が0でありかつ最大アドレス値C52Aが8であるとき(1回目のリード転送時)に各プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3に格納されるしきい値データと、オフセット値C58が8でありかつ最大アドレス値C52Aが16であるとき(2回目のリード転送時)に各プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3に格納されるしきい値データとを示すブロック図である。
Next, operations of the
まず始めに、図11において、グローバルプロセッサ2は、ディザ処理の開始時に、DDRメモリ3に格納された8×8のディザテーブルデータの第1行の各列のセル1〜8及び第5行の各列のセル33〜40の各しきい値データをリードバッファRB0のアドレス1〜16に順次それぞれ格納し、ディザテーブルデータの第2行の各列のセル9〜16及び第2行の各列のセル41〜48の各しきい値データをリードバッファRB1のアドレス1〜16に順次それぞれ格納し、ディザテーブルデータの第3行の各列のセル17〜24及び第7行の各列のセル49〜56の各しきい値データをリードバッファRB2のアドレス1〜16に順次それぞれ格納し、ディザテーブルデータの第4行の各列のセル25〜32及び第8行の各列のセル57〜64の各しきい値データをリードバッファRB3のアドレス1〜16に順次それぞれ格納するように、メモリコントローラ4Cを制御する。これにより、DDRメモリ3からメモリコントローラ4Cへの1回のデータ転送により、図11に示すように、リードバッファRB0〜RB3に全てのしきい値データが格納される。
First, in FIG. 11, when the dither processing is started, the
次に、グローバルプロセッサ2は、リードバッファRB0からSIMD型プロセッサ1へのデータ転送を指示しかつオフセット値0及び最大アドレス値8を指定するリード転送開始指令をマルチプレクサ58と、リードバッファカウンタ回路51と、ループレジスタ52Aとに出力する。これに応答して、マルチプレクサ58はオフセット値C58(0である。)を加算器59に出力し、リードバッファカウンタ回路51はアドレス値C51を0にリセットし、ループレジスタ52Aは最大アドレス値C52A(8である。)を比較器53に出力する。
Next, the
従って、リードバッファカウンタ回路51からのアドレス値C51は0,1,2,…,7,8,0,1,…のように変化する。また、アドレス値C51が8になるとアドレス値C51は0にリセットされるので、メモリコントローラ4CからSIMD型プロセッサ1へのデータ転送タイミングにおける加算器59からのアドレス値C59は、0,1,2,…,7,0,1,2,…のように変化する。これにより、リードバッファRB0のアドレス0,1,2,…,7に格納されたセル0〜7の各しきい値データがデータバスDP0に順次繰り返して出力される。グローバルプロセッサ2は、データバスDP0に出力されたしきい値データを、プロセッサエレメントPE0〜PENのレジスタRjに順次それぞれ格納するように制御する。
Accordingly, the address value C51 from the read
また、グローバルプロセッサ2は、リードバッファコントローラ10Cと同様に構成されたリードバッファコントローラ11C,12C,13Cを、リードバッファコントローラ10Cと同様に制御する。これにより、図11に示すように、プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3に、ディザテーブルデータのセル1〜32のしきい値データが格納される。そして、グローバルプロセッサ2は、1ライン目〜4ライン目の画像データに対して、プロセッサエレメントPE0〜PENの各レジスタRj〜Rj+3に格納されたしきい値データを用いてディザ処理を行う。
Further, the
次に、グローバルプロセッサ2は、グローバルプロセッサ2は、DDRメモリ3からメモリコントローラ4Cへのデータ転送を行うことなく、リードバッファRB0からSIMD型プロセッサ1へのデータ転送を指示しかつオフセット値8及び最大アドレス値16を指定するリード転送開始指令をマルチプレクサ58と、リードバッファカウンタ回路51と、ループレジスタ52Aとに出力する。これに応答して、マルチプレクサ58はオフセット値C58(8である。)を加算器59に出力し、リードバッファカウンタ回路51はアドレス値C51を0にリセットし、ループレジスタ52Aは最大アドレス値C52A(16である。)を比較器53に出力する。
Next, the
従って、リードバッファカウンタ回路51からのアドレス値C51は0,1,2,…,7,8,0,1,…のように変化する。また、アドレス値C51が16になるとアドレス値C51は0にリセットされるので、メモリコントローラ4CからSIMD型プロセッサ1へのデータ転送タイミングにおける加算器59からのアドレス値C59は、8,9,10…,15,8,9,10,…のように変化する。これにより、リードバッファRB0のアドレス8,9,10…,15に格納されたセル33〜40の各しきい値データがデータバスDP0に順次繰り返して出力される。グローバルプロセッサ2は、データバスDP0に出力されたしきい値データを、プロセッサエレメントPE0〜PENのレジスタRjに順次それぞれ格納するように制御する。
Accordingly, the address value C51 from the read
また、グローバルプロセッサ2は、リードバッファコントローラ10Cと同様に構成されたリードバッファコントローラ11C,12C,13Cを、リードバッファコントローラ10Cと同様に制御する。これにより、図11に示すように、プロセッサエレメントPE0〜PENのレジスタRj〜Rj+3に、ディザテーブルデータのセル33〜64のしきい値データが格納される。そして、グローバルプロセッサ2は、5ライン目〜8ライン目の画像データに対して、プロセッサエレメントPE0〜PENの各レジスタRj〜Rj+3に格納されたしきい値データを用いてディザ処理を行う。
Further, the
以上説明したように、本実施形態によれば、SIMD型プロセッサ1とDDRメモリ3との間のデータ転送幅が32ビットであるとき、DDRメモリ3からメモリコントローラ4Cへのデータ転送を1回だけ行い、メモリコントローラ4CからSIMD型プロセッサ1へのデータ転送を2回行うことにより、8×8のディザテーブルデータをSIMD型プロセッサ1に転送できる。
As described above, according to the present embodiment, when the data transfer width between the
なお、本実施形態において、8×8のマトリクスサイズを有するディザテーブルデータをSIMD型プロセッサ1に転送したが、本発明はこれに限られない。K×Lのマトリクスサイズ(K及びLは正の整数。)を有するディザテーブルデータをSIMD型プロセッサ1に転送する場合、例えば、リードバッファRB0はディザテーブルデータの所定の第1の行の各列のデータと、ディザテーブルデータの所定の第2の行の各列のデータとを順次それぞれ所定のアドレスに格納する。さらに、上述した第1の行の各列のデータの各プロセッサエレメントPE0〜PENへの転送時は、オフセット値C58は第1の行の第1の列のデータの格納アドレスに設定され、かつ最大アドレス値C52Aは第1の行の各列のデータのうちリードバッファRB0に最後に格納されたデータの格納アドレスの次のリードバッファRB0のアドレスに設定される。また、上述した第2の行の各列のデータの各プロセッサエレメントPE0〜PENへの転送時は、オフセット値C58は第2の行の第1の列のデータの格納アドレスに設定され、かつ最大アドレス値C52Aは第2の行の各列のデータのうちリードバッファRB0に最後に格納されたデータの格納アドレスの次のリードバッファRB0のアドレスに設定される。
In the present embodiment, dither table data having a matrix size of 8 × 8 is transferred to the
また、本実施形態において、各リードバッファRB0〜RB3にディザテーブルデータの2行分のしきい値データを転送したが、本発明はこれに限られず、3行以上の複数の行のしきい値データを転送してもよい。例えば、リードバッファRB0にディザテーブルデータの複数の行のしきい値データを順次転送した場合、オフセット値C58を、SIMD型プロセッサ1に繰り返して転送する行の第1の列のしきい値データの格納アドレスに設定し、最大アドレス値C52Aを、SIMD型プロセッサ1に繰り返して転送する行の各列のしきい値データのうちリードバッファRB0に最後に格納されたデータの格納アドレスの次のリードバッファRB0のアドレスに設定すればよい。
In this embodiment, threshold data for two rows of dither table data is transferred to each of the read buffers RB0 to RB3. However, the present invention is not limited to this, and threshold values for a plurality of rows of three or more rows are used. Data may be transferred. For example, when threshold data of a plurality of rows of dither table data is sequentially transferred to the read buffer RB0, the offset value C58 is repeatedly transferred to the
また、本実施形態において、リードバッファコントローラ10Cは、第3の実施形態のリセット値設定回路56をさらに備えてもよい。
In the present embodiment, the read buffer controller 10C may further include the reset
さらに、上記各実施形態において、ディザテーブルデータのマトリクスサイズは4×4又は8×8であったが、本発明はこれに限られず、16×16又は32×32等の他のマトリクスサイズであってもよい。 Further, in each of the above embodiments, the matrix size of the dither table data is 4 × 4 or 8 × 8, but the present invention is not limited to this, and other matrix sizes such as 16 × 16 or 32 × 32 may be used. May be.
またさらに、上記各実施形態において、メモリコントローラ4,4A,4B,4Cは、ディザ処理に用いるディザテーブルデータをSIMD型プロセッサ1に転送したが、本発明はこれに限られず、画像処理などの所定の処理に用いる所定のデータをDDRメモリ3からSIMD型プロセッサ1に転送してもよい。
Furthermore, in each of the above embodiments, the
また、上述した各実施形態において、各プロセッサエレメントPE0〜PENの各4個レジスタRj〜Rj+3をメモリコントローラ4,4A,4B,4Cを介してDDRメモリ3に接続したが、本発明はこれに限られず、各プロセッサエレメントPE0〜PENの少なくとも1個のレジスタをメモリコントローラ4,4A,4B,4Cを介してDDRメモリ3に接続すればよい。この場合、各プロセッサエレメントPE0〜PENにおいてDDRメモリ3に接続されたレジスタの個数と同数のリードバッファコントローラ10,10A,10B又は10Cを設ければよい。
In the above-described embodiments, the four registers Rj to Rj + 3 of the processor elements PE0 to PEN are connected to the
さらに、上述した各実施形態において、メモリコントローラ4,4A,4B,4CはSIMD型プロセッサ1の外部に設けられたが、本発明はこれに限られず、メモリコントローラ4,4A,4B,4CはSIMD型プロセッサ1の内部に設けられてもよい。これにより、プロセッサエレメントPE0〜PENと、メモリコントローラ4,4A,4B又は4Cとを備えたSIMD型プロセッサを提供できる。
Further, in each of the above-described embodiments, the
1…SIMD型プロセッサ、
2…グローバルプロセッサ、
3…DDRメモリ、
4,4A,4B,4C…メモリコントローラ、
10,10A,10B,10C,11,12,13…リードバッファコントローラ、
51…リードバッファカウンタ回路、
52,52A…ループレジスタ、
53…比較器、
54…リセット値レジスタ、
55…マルチプレクサ、
56…リセット値設定回路、
57…オフセット値レジスタ、
58…マルチプレクサ、
59…加算器、
60…オフセット値レジスタ、
PE0〜PEN…プロセッサエレメント、
RB0,RB1,RB2,RB3…リードバッファ。
1 ... SIMD type processor,
2 ... Global processor,
3 ... DDR memory,
4, 4A, 4B, 4C ... memory controller,
10, 10A, 10B, 10C, 11, 12, 13... Read buffer controller,
51 ... Read buffer counter circuit,
52, 52A ... loop register,
53 ... Comparator,
54 ... Reset value register,
55. Multiplexer,
56 ... Reset value setting circuit,
57: Offset value register,
58. Multiplexer,
59 ... adder,
60: Offset value register,
PE0 to PEN: Processor element,
RB0, RB1, RB2, RB3... Read buffer.
Claims (8)
上記アドレス値を発生して上記リードバッファに出力するリードバッファコントローラとを備えたメモリコントローラにおいて、
上記リードバッファコントローラは、
上記リードバッファが上記各プロセッサエレメントに上記データを転送する毎に上記アドレス値をインクリメントして出力するリードバッファカウンタ回路と、
所定の最大アドレス値を格納するループレジスタと、
上記リードバッファカウンタ回路から出力されるアドレス値を上記最大アドレス値と比較し、上記アドレス値が上記最大アドレス値と一致したとき、上記リードバッファカウンタ回路をリセットするためのカウンタリセット信号を発生して上記リードバッファカウンタ回路に出力する比較器とを備えたことを特徴とするメモリコントローラ。 Data from the storage device is temporarily stored at predetermined addresses in sequence, and the data stored at the address of the input address value is converted into a plurality of processor elements of a SIMD (Single Instruction-stream Multiple Data-stream) type processor. A read buffer to transfer to,
In a memory controller including a read buffer controller that generates the address value and outputs the address value to the read buffer,
The read buffer controller
A read buffer counter circuit that increments and outputs the address value each time the read buffer transfers the data to the processor elements;
A loop register for storing a predetermined maximum address value;
The address value output from the read buffer counter circuit is compared with the maximum address value, and when the address value matches the maximum address value, a counter reset signal for resetting the read buffer counter circuit is generated. And a comparator for outputting to the read buffer counter circuit.
上記リードバッファカウンタ回路は、上記リードバッファから上記各プロセッサエレメントへのデータ転送の開始時に、上記アドレス値を上記リセット値にリセットすることを特徴とする請求項1又は2記載のメモリコントローラ。 The read buffer controller further includes a reset value setting circuit that outputs a predetermined reset value to the read buffer counter circuit at the start of data transfer from the read buffer to each processor element,
3. The memory controller according to claim 1, wherein the read buffer counter circuit resets the address value to the reset value at the start of data transfer from the read buffer to each processor element.
上記最大アドレス値は、上記リードバッファに最後に格納されたデータの格納アドレスの次の上記リードバッファのアドレスに設定されたことを特徴とする請求項1乃至3のうちのいずれか1つに記載のメモリコントローラ。 The read buffer sequentially stores data of each column in a predetermined row of predetermined table data from the storage device at a predetermined address, respectively.
4. The maximum address value is set to an address of the read buffer next to a storage address of data last stored in the read buffer. Memory controller.
所定のオフセット値を出力するオフセット値設定回路と、
上記リードバッファカウンタ回路から出力されるアドレス値に上記オフセット値を加算し、当該加算結果のアドレス値を上記リードバッファと上記比較器とに出力する加算器とをさらに備え、
上記比較器は、上記リードバッファカウンタ回路から出力されるアドレス値に代えて、上記加算器からのアドレス値を上記最大アドレス値と比較することを特徴とする請求項1乃至3のうちのいずれか1つに記載のメモリコントローラ。 The read buffer controller
An offset value setting circuit for outputting a predetermined offset value;
An adder for adding the offset value to the address value output from the read buffer counter circuit and outputting the address value of the addition result to the read buffer and the comparator;
4. The comparator according to claim 1, wherein the comparator compares the address value from the adder with the maximum address value instead of the address value output from the read buffer counter circuit. The memory controller according to one.
上記第1の行の各列のデータの上記各プロセッサエレメントへの転送時は、上記オフセット値は上記第1の行の第1の列のデータの格納アドレスに設定され、かつ上記最大アドレス値は上記第1の行の各列のデータのうち上記リードバッファに最後に格納されたデータの格納アドレスの次の上記リードバッファのアドレスに設定され、
上記第2の行の各列のデータの上記各プロセッサエレメントへの転送時は、上記オフセット値は上記第2の行の第1の列のデータの格納アドレスに設定され、かつ上記最大アドレス値は上記第2の行の各列のデータのうち上記リードバッファに最後に格納されたデータの格納アドレスの次の上記リードバッファのアドレスに設定されたことを特徴とする請求項5記載のメモリコントローラ。 The read buffer sequentially stores data in each column of a predetermined first row of predetermined table data from the storage device and data in each column of a predetermined second row of the table data at predetermined addresses. Stored in
When transferring the data of each column of the first row to the processor elements, the offset value is set to the storage address of the data of the first column of the first row, and the maximum address value is Set to the address of the read buffer next to the storage address of the data stored last in the read buffer among the data of each column of the first row,
When transferring the data of each column of the second row to the processor elements, the offset value is set to the storage address of the data of the first column of the second row, and the maximum address value is 6. The memory controller according to claim 5, wherein the memory controller is set to an address of the read buffer next to a storage address of data last stored in the read buffer among the data of each column of the second row.
請求項1乃至7のうちのいずれか1つに記載のメモリコントローラとを備えたことを特徴とするSIMD型プロセッサ。 The plurality of processor elements;
An SIMD type processor comprising the memory controller according to claim 1.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011200529A JP2013061851A (en) | 2011-09-14 | 2011-09-14 | Memory controller and simd type processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011200529A JP2013061851A (en) | 2011-09-14 | 2011-09-14 | Memory controller and simd type processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013061851A true JP2013061851A (en) | 2013-04-04 |
Family
ID=48186460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011200529A Pending JP2013061851A (en) | 2011-09-14 | 2011-09-14 | Memory controller and simd type processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013061851A (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05509425A (en) * | 1990-05-18 | 1993-12-22 | スター・セミコンダクター・コーポレーション | Programmable signal processor architecture |
US5606707A (en) * | 1994-09-30 | 1997-02-25 | Martin Marietta Corporation | Real-time image processor |
JP2000341522A (en) * | 1999-05-27 | 2000-12-08 | Canon Inc | Printer and image generating method therefor |
JP2002207707A (en) * | 2001-01-11 | 2002-07-26 | Ricoh Co Ltd | Simd type micro-processor having function for selecting constant |
-
2011
- 2011-09-14 JP JP2011200529A patent/JP2013061851A/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05509425A (en) * | 1990-05-18 | 1993-12-22 | スター・セミコンダクター・コーポレーション | Programmable signal processor architecture |
US5606707A (en) * | 1994-09-30 | 1997-02-25 | Martin Marietta Corporation | Real-time image processor |
JP2000341522A (en) * | 1999-05-27 | 2000-12-08 | Canon Inc | Printer and image generating method therefor |
JP2002207707A (en) * | 2001-01-11 | 2002-07-26 | Ricoh Co Ltd | Simd type micro-processor having function for selecting constant |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008148291A5 (en) | ||
JP6251029B2 (en) | Control device, image processing device, control method, and program | |
US10225425B2 (en) | Information processing apparatus and method for controlling the same | |
JP2013073508A (en) | Data processing device, data processing method, and program | |
JP2001358942A (en) | Error diffusion calculating device | |
CN104065937A (en) | Real-time high-speed image pre-processing method for CMOS image sensor | |
JP2013061851A (en) | Memory controller and simd type processor | |
JP2016134005A (en) | Image processor | |
US20160127613A1 (en) | Memory control circuit and image forming apparatus | |
JPH11306343A (en) | Rotational processing device for two-dimensional data | |
CN110072032B (en) | image processing device | |
US20050285871A1 (en) | Image-processing circuit, electronic apparatus, and method for processing image | |
JP2012203543A (en) | Data processing apparatus and data processing method | |
JP6241670B2 (en) | Image processing device | |
JP2009104521A (en) | Parallel processor | |
JP2008059452A (en) | Image processing apparatus and image processing method | |
JP4238529B2 (en) | Image processing device | |
JP4802482B2 (en) | Image processing apparatus and image processing method | |
JP5278497B2 (en) | Image processing apparatus and image processing method | |
JP2017138805A (en) | Image processing apparatus and control method | |
JP2006229505A (en) | Image processor and image processing method | |
US20040186919A1 (en) | Data converting circuit, data converting method, and image forming apparatus | |
JP6205980B2 (en) | Image transfer apparatus and image transfer method | |
JP2009090543A (en) | Information processing apparatus, printing apparatus, and information processing method | |
JP2005050341A (en) | Image processor and its method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140812 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150528 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150616 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20151020 |