JP6204313B2 - Electronics - Google Patents
Electronics Download PDFInfo
- Publication number
- JP6204313B2 JP6204313B2 JP2014174641A JP2014174641A JP6204313B2 JP 6204313 B2 JP6204313 B2 JP 6204313B2 JP 2014174641 A JP2014174641 A JP 2014174641A JP 2014174641 A JP2014174641 A JP 2014174641A JP 6204313 B2 JP6204313 B2 JP 6204313B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- subline
- process identifier
- processing
- transfer unit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System (AREA)
- Facsimiles In General (AREA)
Description
本発明は、電子機器に関するものである。 The present invention relates to an electronic device.
ある情報処理装置は、ASIC(Application Specific Integrated Circuit)などの専用ハードウェアで特定のプロセスを実行するとともに、SIMD(Single Instruction Multiple Data stream)プロセッサーによるソフトウェア処理で特定のプロセスを実行している(例えば特許文献1参照)。 A certain information processing apparatus executes a specific process by dedicated hardware such as an ASIC (Application Specific Integrated Circuit) and also executes a specific process by software processing by a SIMD (Single Instruction Multiple Data stream) processor (for example, Patent Document 1).
図4は、電子機器内のデータフローの一例を示すブロック図である。逐次的に処理すべき一連の処理をプロセスブロックとすると、図4に示すように、例えば、電子機器において4つのASICと1つのSIMDプロセッサーによる3つのプロセスで、複数のプロセスブロックが実行される。例えばプロセスブロック#0では、まず、画像データにおけるバンドデータ(一定の幅分のラインデータの集合)に対して、ASIC#0による処理が実行された後、SIMDプロセッサーによるプロセス#0なる処理が実行され、その後に、別のASIC#1による処理が実行される。なお、複数のプロセスブロックは、並列に実行される場合もシーケンシャルに実行される場合もある。
FIG. 4 is a block diagram illustrating an example of a data flow in the electronic device. Assuming that a series of processes to be processed sequentially is a process block, as shown in FIG. 4, for example, in an electronic device, a plurality of process blocks are executed by three processes by four ASICs and one SIMD processor. For example, in the
具体的には、例えば、複合機などの画像形成装置において、あるプロセスブロックとして、まず、ASICによって画像読取による画像データの取得が実行され、SIMDプロセスでその画像データに対する空間フィルターが適用され、次に、別のプロセスブロックとして、画像データに対して色変換などの画像処理が実行された後、ASICによってハーフトーニングが実行される。 Specifically, for example, in an image forming apparatus such as a multifunction machine, as a certain process block, first, acquisition of image data by image reading is executed by an ASIC, and a spatial filter is applied to the image data in the SIMD process. In addition, as another process block, image processing such as color conversion is performed on the image data, and then halftoning is performed by the ASIC.
図5は、図4に示すプロセスブロック(PB)#0〜#2によるASICに要求されるデータ処理の帯域を説明する図である。一般的に、プロセスブロックを中断し別のプロセスブロックを実行すると、コンテクストスイッチが発生しオーバーヘッドが発生するため、図5に示すように、プロセスブロック#0〜#2は、逐次的に実行される。そのため、ASICによるデータ処理速度に比べSIMDプロセスのデータ処理速度が高い場合、処理の種類によっては、図5におけるASIC#2のように、特定のASICに広い帯域(つまり、高いスループット)が要求されることになり、その帯域を実現するために装置のコストが高くなったり、要求される帯域を達成せずに処理速度を低く抑えることになったりする。
FIG. 5 is a diagram for explaining a data processing band required for the ASIC by the process blocks (PB) # 0 to # 2 shown in FIG. Generally, when a process block is interrupted and another process block is executed, a context switch occurs and overhead is generated. Therefore, as shown in FIG. 5,
本発明は、上記の問題に鑑みてなされたものであり、全体としてのデータ処理速度の低下を抑えつつ、ASICなどの複数のハードウェア処理部のそれぞれの要求帯域を時間軸方向で平準化することで、最大要求帯域を低く抑える電子機器を得ることを目的とする。 The present invention has been made in view of the above problems, and leveling the required bandwidth of each of a plurality of hardware processing units such as an ASIC in the time axis direction while suppressing a decrease in the overall data processing speed. Thus, it is an object to obtain an electronic device that keeps the maximum required bandwidth low.
本発明に係る電子機器は、データに対してハードウェア処理とソフトウェア処理とを順番に実行する電子機器であって、前記ハードウェア処理を行うハードウェア処理部と、前記ソフトウェア処理を行うソフトウェア処理部と、前記ソフトウェア処理部用の内部メモリーと、ラインを主走査方向において所定数に分割して得られる1サブライン分のデータを外部メモリーから読み出すリードダイレクトメモリーアクセスコントローラーと、前記ハードウェア処理部および前記リードダイレクトメモリーアクセスコントローラーのうち、プロセス識別子に対応する送信元から1サブライン分のデータを前記内部メモリーへ転送するロード転送部と、1サブライン分のデータを前記外部メモリーへ書き込むライトダイレクトメモリーアクセスコントローラーと、前記内部メモリーに格納されている1サブライン分のデータを、前記ハードウェア処理部および前記ライトダイレクトメモリーアクセスコントローラーのうち、プロセス識別子に対応する宛先へ転送するストア転送部と、前記ロード転送部および前記ストア転送部に対して前記プロセス識別子を指定して、1サブライン分のデータの転送を実行させるコントローラーとを備える。そして、前記内部メモリーは、複数のバッファー領域を有し、前記ロード転送部は、前記バッファー領域へデータを書き込み、前記ソフトウェア処理部は、マルチスレッドで、前記複数のバッファー領域から1サブライン分のデータを読み出して処理を実行する。前記コントローラーは、前記複数のバッファー領域の排他制御を行い、前記ソフトウェア処理部による前記バッファー領域内のデータの使用が完了するまで、前記バッファー領域をロックし、あるプロセス識別子により指定される前記バッファー領域のうち、ロックされていない前記バッファー領域がないときには、前記ロード転送部に対して、前記プロセス識別子により指定される前記データの、前記内部メモリーへの転送を実行させず、別のプロセス識別子により指定される前記バッファー領域のうち、ロックされていない前記バッファー領域があれば、前記ロード転送部に対して、前記別のプロセス識別子により指定される前記データの、前記内部メモリーへの転送を実行させる。 An electronic device according to the present invention is an electronic device that sequentially performs hardware processing and software processing on data, and includes a hardware processing unit that performs the hardware processing and a software processing unit that performs the software processing An internal memory for the software processing unit, a read direct memory access controller that reads data for one subline obtained by dividing a line into a predetermined number in the main scanning direction from an external memory, the hardware processing unit, and the Among the read direct memory access controllers, a load transfer unit for transferring data for one subline from the transmission source corresponding to the process identifier to the internal memory, and a write direct memory access controller for writing data for one subline to the external memory. A roller, a store transfer unit that transfers data for one subline stored in the internal memory to a destination corresponding to a process identifier among the hardware processing unit and the write direct memory access controller, and the load transfer And a controller for designating the process identifier to the store transfer unit and transferring data for one subline. The internal memory has a plurality of buffer areas, the load transfer unit writes data to the buffer areas, and the software processing unit is multi-threaded and data for one subline from the plurality of buffer areas. Is read and the process is executed. The controller performs exclusive control of the plurality of buffer areas, locks the buffer area until the use of the data in the buffer area by the software processing unit is completed, and the buffer area specified by a certain process identifier When there is no buffer area that is not locked, the load transfer unit does not transfer the data specified by the process identifier to the internal memory, and is specified by another process identifier. If there is an unlocked buffer area among the buffer areas to be transferred, the load transfer unit is caused to transfer the data specified by the another process identifier to the internal memory.
本発明によれば、コンテクスト切り替えのオーバーヘッドを抑えつつ、データおよび処理の粒度を小さくしているので、全体としてのデータ処理速度の低下を抑えつつ、ASICなどの複数のハードウェア処理部のそれぞれの要求帯域を時間軸方向で平準化することで、最大要求帯域が低く抑えられる。 According to the present invention, since the granularity of data and processing is reduced while suppressing the overhead of context switching, each of a plurality of hardware processing units such as ASICs is suppressed while suppressing a decrease in the overall data processing speed. By leveling the required bandwidth in the time axis direction, the maximum required bandwidth can be kept low.
以下、図に基づいて本発明の実施の形態を説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
図1は、本発明の実施の形態に係る電子機器の構成を示すブロック図である。図1に示す電子機器は、データに対してハードウェア処理とソフトウェア処理とをシーケンシャルに実行する。例えば、この電子機器は、複合機などの画像形成装置であって、画像データに対する画像処理をハードウェア処理およびソフトウェア処理で行う。 FIG. 1 is a block diagram showing a configuration of an electronic apparatus according to an embodiment of the present invention. The electronic device illustrated in FIG. 1 sequentially performs hardware processing and software processing on data. For example, the electronic device is an image forming apparatus such as a multifunction peripheral, and performs image processing on image data by hardware processing and software processing.
図1に示す電子機器は、ハードウェア処理部としての複数のASIC1を備え、また、ソフトウェア処理部としてのSIMDプロセッサー2を備える。SIMDプロセッサー2は、各ASIC1に比べ高いデータ処理速度を有する。
The electronic device shown in FIG. 1 includes a plurality of
複数のASIC1は、それぞれ、所定のハードウェア処理(つまり、専用ハードウェアによる特定のデータ処理)を行い、SIMDプロセッサー2は、マルチスレッドで動作し、複数のプロセスブロックに対応するそれぞれのスレッドで、ソフトウェア処理(つまり、ソフトウェアによるプログラミングされたデータ処理)を行う。
Each of the plurality of
この実施の形態では、SIMDプロセッサー2は、画像処理を実行し、少なくともサブラインの画素数と同数のプロセシングエレメントを備える。つまり、1サブライン内のすべての画素に対する処理がその複数のプロセシングエレメントで並列に行われる。
In this embodiment, the
リードDMAC(Direct Memory Access Controller)3は、外部メモリー102から1サブライン分のデータを読み出す。1サブラインは、データの1ラインを主走査方向において所定数に分割して得られるデータ量である。
A read DMAC (Direct Memory Access Controller) 3 reads data for one subline from the
リードDMAC3は、内蔵メモリー(例えば、SRAM(Static RAM)、DRAMなど)を備え、プロセス識別子ごとにコンテクスト情報をその内蔵メモリーに保存し、コントローラー31により指定されたプロセス識別子に対応するコンテクスト情報を内蔵メモリーから読み出してコンテクスト切り替えを行った後、切り換え後のコンテクスト情報に基づいて、指定されたプロセス識別子に対応するデータの読み出しを実行する。このようにすることで、外部メモリー102にコンテクスト情報を保存する場合に比べ、コンテクスト情報の読み出しに起因する遅延が少なくて済む。
The read
ライトDMAC4は、1サブライン分のデータを外部メモリー102へ書き込む。ライトDMAC4も、内蔵メモリーを備え、プロセス識別子ごとにコンテクスト情報をその内蔵メモリーに保存し、コントローラー31により指定されたプロセス識別子に対応するコンテクスト情報を内蔵メモリーから読み出してコンテクスト切り替えを行った後、切り換え後のコンテクスト情報に基づいて、指定されたプロセス識別子に対応するデータの書き込みを実行する。
The write DMAC 4 writes data for one subline to the
図1において、ルーティング部11は、ASIC1間およびASIC1とバッファー12との間の静的なルーティングを行う。バッファー12は、ASIC1に対応して設けられており、FIFO(First-In First-Out)で、ASIC1へ転送されるデータおよびASIC1から転送されるデータを受け付けて一時的に格納する。ただし、バッファー12は、ASIC1と同数でもよいが、ASIC1より少なくてもよい。
In FIG. 1, the
また、図1において、内部メモリー21は、SIMDプロセッサー2用の内部メモリー(つまり、SIMDプロセッサー2内のプロセシングエレメントの共有メモリー)であって、RAM(Random Access Memory)であり、メモリーインターフェイス22は、内部メモリー21に対するリード/ライトを実行する。
In FIG. 1, an
内部メモリー21は、複数のバッファー領域を有し、SIMDプロセッサー2は、マルチスレッドで動作し、複数のバッファー領域から1サブライン分のデータを読み出して処理を実行する。例えば、内部メモリー21は、プロセスブロックごと(つまり、SIMDプロセッサー2のスレッドごと)に、リングバッファー領域を有し、SIMDプロセッサー2は、各スレッドにおいて、リングバッファー領域から順番にデータを読み出して処理を実行する。
The
ロード転送部23は、ASIC1およびリードDMAC3のうち、プロセス識別子に対応する送信元から、1サブライン分のデータを、メモリーインターフェイス22を使用して内部メモリー21へ転送する。具体的には、ロード転送部23は、上述のバッファー領域へデータを書き込む。
The
ストア転送部24は、内部メモリー21に格納されている1サブライン分のデータを、ASIC1およびライトDMAC4のうち、プロセス識別子に対応する宛先へ転送する。
The
ルーティング部25は、1サブライン分のデータの、リードDMAC3から、ASIC1(具体的には、対応するバッファー12)およびロード転送部23のいずれかへのルーティング、並びに1サブライン分のデータの、ストア転送部24から、ASIC1(具体的には、対応するバッファー12)およびライトDMAC4のいずれかへのルーティングを行う。具体的には、プロセス識別子に対応して宛先へのチャネルが決定され、データがそのチャネルで宛先へ転送される。このとき、1サブライン分のデータが宛先へバースト転送される。
The
コントローラー31は、I/O(Input/Output)バス32を使用して、SIMDプロセッサー2との間でプロセッサー間通信を行うとともに、リードDMAC3、ライトDMAC4、ロード転送部23、ストア転送部24などにコマンドを出力する。
The
コントローラー31は、ロード転送部23およびストア転送部24に対してプロセス識別子を指定して、1サブライン分のデータの転送を実行させる。
The
また、コントローラー31は、プロセス識別子を指定して、1サブライン分のデータを、リードDMAC3に読み出させる。さらに、コントローラー31は、プロセス識別子を指定して、1サブライン分のデータを、ライトDMAC4に書き込ませる。
In addition, the
また、コントローラー31は、内部メモリー21の複数のバッファー領域の排他制御を行い、SIMDプロセッサー2によるバッファー領域内のデータの使用が完了するまで、そのバッファー領域をロックする。そして、コントローラー31は、あるプロセス識別子により指定されるバッファー領域のうち、ロックされていないバッファー領域がないときには、ロード転送部23に対して、そのプロセス識別子により指定されるデータの、内部メモリー21への転送を実行させず、別のプロセス識別子により指定されるバッファー領域のうち、ロックされていないバッファー領域があれば、ロード転送部23に対して、その別のプロセス識別子により指定されるデータの、内部メモリー21への転送を実行させる。
Further, the
ホストインターフェイス33は、メインCPU(Central Processing Unit)101とコントローラー31との間の通信を行う。メインCPU101は、例えば、画像データからバンドデータを生成し、さらに、主走査方向においてバンドデータを分割して得られるサブバンドデータを生成し、外部メモリー102に格納する。なお、メインCPU101は、上述のプロセスブロックの実行中には、コントローラー31には介入しない。外部メモリー102は、メインCPU101のメインメモリーであるDRAMなどである。メインCPU101および外部メモリー102は、システムクロックドメインに属し、SIMDプロセッサー2は、システムクロックドメインとは異なるクロックドメインに属する。
The
次に、上記電子機器の動作について説明する。 Next, the operation of the electronic device will be described.
図2は、図1に示す電子機器の動作について説明する図である。図3は、図1に示す電子機器において使用されるプロセス識別子のフォーマットの一例を示す図である。 FIG. 2 is a diagram illustrating an operation of the electronic device illustrated in FIG. FIG. 3 is a diagram showing an example of a format of a process identifier used in the electronic device shown in FIG.
まず、メインCPU101によって、外部メモリー102にサブバンドデータが準備される。
First, the
そして、以下のように、外部メモリー102から1サブラインずつ、データが読み出され、複数のプログラムブロックが、1サブラインの粒度で並行に実行される。
Then, as described below, data is read from the
コントローラー31は、内部メモリー21のバッファー領域を排他制御しており、所定の調停方式で、空きバッファー領域のあるプロセスブロック(スレッド)の1つ選択し、選択したプロセスブロック(スレッド)に対応するプロセス識別子を指定して、リードDMAC3およびロード転送部23へコマンドを出力する。
The
プロセス識別子は、図3に示すように、プロセスブロック固有のプロセスブロックID、およびプロセス種別を示すローカルプロセスIDを有する。所定の複数セットの一連の処理に対してそれぞれローカルプロセスIDの値が割り当てられており、プロセス識別子に含まれるローカルプロセスIDに基づいて、プロセスブロックIDで指定されたプロセスブロックで実行すべき処理およびその順序が特定される。 As shown in FIG. 3, the process identifier has a process block ID unique to the process block and a local process ID indicating the process type. A local process ID value is assigned to each of a predetermined series of processes, and a process to be executed in the process block specified by the process block ID based on the local process ID included in the process identifier The order is specified.
リードDMAC3は、そのコマンドを受け付けると、そのコマンドにより指定されたプロセス識別子に対応するコンテクスト情報(1サブライン分のデータの読み出しアドレスなど)をセットした後、外部メモリー102から1サブライン分のデータを読み出し、コンテクスト情報を更新する。また、ロード転送部23は、その1サブライン分のデータを内部メモリー21のそのプロセス識別子に対応するバッファー領域へ転送する。その際、プロセス識別子におけるプロセスブロックIDがコンテクストIDとして使用され、プロセスブロックIDごとにコンテクスト情報が保存される。
When the
ロード転送部23は、転送が完了すると、転送完了をコントローラー31に通知する。転送完了の通知を受け付けると、転送したデータに対してSIMDプロセッサー2による処理を実行する場合には、コントローラー31は、ただちに、SIMDプロセッサー2にコマンドを送信し、そのデータに対する処理を実行させる。処理後のデータは、そのプロセス識別子に対応するバッファー領域に格納される。そして、SIMDプロセッサー2は、1サブバンド分のデータ処理が完了すると、処理完了をコントローラー31に通知する。
When the transfer is completed, the
コントローラー31は、SIMDプロセッサー2による処理が完了し内部メモリー21から転送すべきデータを所定の調停方式で選択し、その選択したデータのプロセス識別子を指定して、ストア転送部24にコマンドを出力する。ストア転送部24は、そのコマンドを受け付けると、指定されたそのプロセス識別子に対応する内部メモリー21のバッファー領域からそのデータを読み出し、そのプロセス識別子を指定して、読み出したデータをルーティング部25へ送出する。そのデータは、ルーティング部25を介して、そのプロセス識別子に対応する宛先(ASIC1のバッファー12またはライトDMAC4)に受信される。
The
なお、データを外部メモリー102に格納する場合には、宛先は、ライトDMAC4とされる。その場合、コントローラー31は、プロセス識別子を指定してコマンドをライトDMAC4に出力する。ライトDMAC4は、そのコマンドを受け付けると、そのコマンドにより指定されたプロセス識別子に対応するコンテクスト情報(1サブライン分のデータの書き込みアドレスなど)をセットした後、ルーティング部25を介してそのデータを受信し、受信したデータを外部メモリー102に書き込む。
When data is stored in the
ASIC1は、バッファー12にデータが入力されると、そのデータに対して処理を実行し、処理後のデータをバッファー12に書き込む。また、ASIC1は、そのデータの処理が完了すると、その処理完了をコントローラー31に通知する。コントローラー31は、その通知を受け付けると、そのデータに対応するプロセス識別子に対応する空きのバッファー領域があれば、ロード転送部23に対してそのプロセス識別子を指定してコマンドを出力し、ロード転送部23は、そのコマンドに従って、バッファー12からデータを読み出し、内部メモリー21のバッファー領域に転送する。
When data is input to the
なお、ASIC1による処理後のデータを、SIMDプロセッサー2による処理を経ずに外部メモリー102に格納したい場合には、上述のように、まず、ASIC1による処理後のデータは、ロード転送部23によって内部メモリー21に転送され、その後、SIMDプロセッサー2による処理を経ずに、ストア転送部24によって、内部メモリー21からライトDRAM4に転送され、外部メモリー102に書き込まれる。このとき、ストア転送部24によるデータ転送が終了した時点で、データ転送の終了がコントローラー31に通知され、コントローラー31は、このデータにより使用された内部メモリー21内のバッファー領域のロックを解除する。
If the data processed by the
また、外部メモリー102に格納されているデータを、SIMDプロセッサー2による処理を経ずにASIC1に転送したい場合には、上述のように、まず、リードDMAC3およびロード転送部23によって、データが内部メモリー21に転送され、その後、SIMDプロセッサー2による処理を経ずに、ストア転送部24によって、内部メモリー21から(ルーティング部25およびバッファー12を介して)ASIC1に転送される。このとき、ストア転送部24によるデータ転送が終了した時点で、データ転送の終了がコントローラー31に通知され、コントローラー31は、このデータにより使用された内部メモリー21内のバッファー領域のロックを解除する。
When data stored in the
このようにして、内部メモリー21に空きのバッファー領域があるプログラムブロックが、SIMDプロセッサー2によるソフトウェア処理が1サブラインの粒度で実行されていき、その前または後に、ASIC1によるハードウェア処理が実行される。その際、データに対して実行すべき一連の処理は、そのデータに付加されているプロセス識別子で特定されるため、コントローラー31が、各データに対して逐一実行すべき処理を指定する必要がない。
In this way, a program block having an empty buffer area in the
したがって、複数のプログラムブロックにおけるSIMDプロセッサー2による処理がマルチスレッドで並行に行われるため、複数のプログラムブロックにおけるSIMDプロセッサー2による処理が時間軸に沿って分散されて実行され、そのSIMDプロセッサー2のプロセスの前または後で実行されるASIC1の処理も時間軸に沿って分散されて実行される。
Therefore, since the processing by the
そして、すべてのサブブロックデータに対する一連の処理が完了し、処理後のサブブロックデータが外部メモリー102に格納されると、メインCPU101は、処理後のサブブロックデータを結合して1つのバンドデータとする。
When a series of processing for all the sub-block data is completed and the processed sub-block data is stored in the
以上のように、上記実施の形態によれば、以下に述べるように、コンテクスト切り替えに起因する全体としてのデータ処理速度の低下を抑えつつ、処理の粒度を1サブラインとしてASIC1のそれぞれの要求帯域を時間軸方向で平準化することで、最大要求帯域が低く抑えられる。
As described above, according to the above-described embodiment, as described below, each requested bandwidth of the
一般的に、短命令ステップ数のソフトウェア処理にハードウェア処理がカスケード接続される場合、ソフトウェア処理の処理粒度(コンテクスト切り替え粒度)に対してソフトウェア処理とハードウェア処理との間のデータバッファのサイズが十分でないとき、後続のハードウェア処理の速度がソフトウェア処理に対して十分でないとソフトウェア処理を待たせることになる。この点について、上記実施の形態では、処理粒度が1サブラインとしており十分小さいため、ソフトウェア処理とハードウェア処理との間のデータバッファが十分確保されている。 Generally, when hardware processing is cascade-connected to software processing with a short instruction step number, the size of the data buffer between software processing and hardware processing is smaller than the processing granularity (context switching granularity) of software processing. When it is not sufficient, if the speed of the subsequent hardware processing is not sufficient for the software processing, the software processing is made to wait. In this regard, in the above embodiment, since the processing granularity is one subline and is sufficiently small, a data buffer between software processing and hardware processing is sufficiently secured.
また、一般的に、処理の粒度を小さくすると、コンテクスト切り替えに起因するオーバーヘッドが大きくなる。この点については、上記実施の形態では、リードDMAC3およびライトDMAC4にローカルな内蔵メモリーを設け、そのメモリーを使用してコンテクスト切り替えが実行されるとともに、SIMDプロセッサー2ではマルチスレッドで処理を切り替えるため、コンテクスト切り替えのオーバーヘッドを軽減している。
In general, when the processing granularity is reduced, the overhead due to context switching increases. Regarding this point, in the above embodiment, the
さらに、ソフトウェア処理をマルチスレッド化した場合、複数のスレッド(ここでは、複数のプロセスブロックに対応する)で1つのハードウェア処理部が使用される場合、一般的に、ハードウェア処理部を共有するために複雑な制御が必要となる。この点については、上記実施の形態では、上述のプロセス識別子に基づいて、1サブラインの粒度で各データの処理順序が判別されるため、比較的簡単な制御で、1つのASIC1を複数のプロセスブロックで共有することができる。
Furthermore, when software processing is multi-threaded, when one hardware processing unit is used by a plurality of threads (corresponding to a plurality of process blocks in this case), the hardware processing unit is generally shared. Therefore, complicated control is required. With regard to this point, in the above embodiment, since the processing order of each data is determined with the granularity of one subline based on the above-described process identifier, one
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。 The above-described embodiments are preferred examples of the present invention, but the present invention is not limited to these, and various modifications and changes can be made without departing from the scope of the present invention. is there.
例えば、上記実施の形態において、上述の調停では、デッドロック回避のために、後方プロセスが優先されるようにしてもよい。 For example, in the above-described embodiment, in the above-described arbitration, a backward process may be prioritized in order to avoid deadlock.
本発明は、例えば、画像形成装置に適用可能である。 The present invention is applicable to, for example, an image forming apparatus.
1 ASIC(ハードウェア処理部の一例)
2 SIMDプロセッサー(ソフトウェア処理部の一例)
3 リードDMAC
4 ライトDMAC
21 内部メモリー
23 ロード転送部
24 ストア転送部
31 コントローラー
1 ASIC (an example of a hardware processing unit)
2 SIMD processor (example of software processing unit)
3 Lead DMAC
4 Write DMAC
21
Claims (5)
前記ハードウェア処理を行うハードウェア処理部と、
前記ソフトウェア処理を行うソフトウェア処理部と、
前記ソフトウェア処理部用の内部メモリーと、
ラインを主走査方向において所定数に分割して得られる1サブライン分のデータを外部メモリーから読み出すリードダイレクトメモリーアクセスコントローラーと、
前記ハードウェア処理部および前記リードダイレクトメモリーアクセスコントローラーのうち、プロセス識別子に対応する送信元から1サブライン分のデータを前記内部メモリーへ転送するロード転送部と、
1サブライン分のデータを前記外部メモリーへ書き込むライトダイレクトメモリーアクセスコントローラーと、
前記内部メモリーに格納されている1サブライン分のデータを、前記ハードウェア処理部および前記ライトダイレクトメモリーアクセスコントローラーのうち、プロセス識別子に対応する宛先へ転送するストア転送部と、
前記ロード転送部および前記ストア転送部に対して前記プロセス識別子を指定して、1サブライン分のデータの転送を実行させるコントローラーとを備え、
前記内部メモリーは、複数のバッファー領域を有し、
前記ロード転送部は、前記バッファー領域へデータを書き込み、
前記ソフトウェア処理部は、マルチスレッドで、前記複数のバッファー領域から1サブライン分のデータを読み出して処理を実行し、
前記コントローラーは、前記複数のバッファー領域の排他制御を行い、前記ソフトウェア処理部による前記バッファー領域内のデータの使用が完了するまで、前記バッファー領域をロックし、あるプロセス識別子により指定される前記バッファー領域のうち、ロックされていない前記バッファー領域がないときには、前記ロード転送部に対して、前記プロセス識別子により指定される前記データの、前記内部メモリーへの転送を実行させず、別のプロセス識別子により指定される前記バッファー領域のうち、ロックされていない前記バッファー領域があれば、前記ロード転送部に対して、前記別のプロセス識別子により指定される前記データの、前記内部メモリーへの転送を実行させること、
を特徴とする電子機器。 In an electronic device that sequentially performs hardware processing and software processing on data,
A hardware processing unit for performing the hardware processing;
A software processing unit for performing the software processing;
An internal memory for the software processor;
A read direct memory access controller for reading out data for one subline obtained by dividing a line into a predetermined number in the main scanning direction from an external memory;
Among the hardware processing unit and the read direct memory access controller, a load transfer unit that transfers data for one subline from the transmission source corresponding to the process identifier to the internal memory,
A write direct memory access controller that writes data for one subline to the external memory;
A store transfer unit that transfers data for one subline stored in the internal memory to a destination corresponding to a process identifier among the hardware processing unit and the write direct memory access controller;
A controller for specifying the process identifier for the load transfer unit and the store transfer unit, and transferring data for one subline,
The internal memory has a plurality of buffer areas,
The load transfer unit writes data to the buffer area,
The software processing unit is multi-threaded and executes processing by reading data for one subline from the plurality of buffer areas,
The controller performs exclusive control of the plurality of buffer areas, locks the buffer area until the use of the data in the buffer area by the software processing unit is completed, and the buffer area specified by a certain process identifier When there is no buffer area that is not locked, the load transfer unit does not transfer the data specified by the process identifier to the internal memory, and is specified by another process identifier. If there is an unlocked buffer area among the buffer areas to be transferred, the load transfer unit is caused to execute transfer of the data specified by the another process identifier to the internal memory. ,
Electronic equipment characterized by
を特徴とする請求項1記載の電子機器。 The read direct memory access controller includes a built-in memory, stores context information in the built-in memory for each process identifier, reads out the context information corresponding to the process identifier specified by the controller from the built-in memory, and stores the context information. After switching, executing reading of the data corresponding to the specified process identifier based on the context information after the switching,
The electronic device according to claim 1.
前記ハードウェア処理および前記ソフトウェア処理は、前記画像データに対する画像処理を含むこと、
を特徴とする請求項1から請求項3のうちのいずれか1項記載の電子機器。 The data is image data,
The hardware processing and the software processing include image processing on the image data;
The electronic device according to any one of claims 1 to 3, wherein
前記1サブライン分のデータは、画像データであり、
前記SIMDプロセッサーは、少なくともサブラインの画素数と同数のプロセシングエレメントを備え、前記プロセシングエレメントで1サブライン分のデータを並列に処理すること、
を特徴とする請求項1から請求項4のうちのいずれか1項記載の電子機器。 The software processing unit is a SIMD processor,
The data for the one subline is image data,
The SIMD processor includes at least the same number of processing elements as the number of pixels of a subline, and the processing element processes data for one subline in parallel;
The electronic device according to any one of claims 1 to 4 , wherein
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014174641A JP6204313B2 (en) | 2014-08-28 | 2014-08-28 | Electronics |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014174641A JP6204313B2 (en) | 2014-08-28 | 2014-08-28 | Electronics |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2016051228A JP2016051228A (en) | 2016-04-11 |
| JP6204313B2 true JP6204313B2 (en) | 2017-09-27 |
Family
ID=55658709
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014174641A Expired - Fee Related JP6204313B2 (en) | 2014-08-28 | 2014-08-28 | Electronics |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6204313B2 (en) |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH03110681A (en) * | 1989-09-25 | 1991-05-10 | Matsushita Graphic Commun Syst Inc | Continuous read processing method for image information |
| JP2998721B2 (en) * | 1997-10-17 | 2000-01-11 | 日本電気株式会社 | An exclusive control method between a parallel processing program and a coprocessor and a computing system having the exclusive control function |
| JP4090920B2 (en) * | 2003-03-19 | 2008-05-28 | 株式会社リコー | Image processing control apparatus and image processing control method |
| JP2007081716A (en) * | 2005-09-13 | 2007-03-29 | Ricoh Co Ltd | Image forming apparatus, image processing unit, image processing method, and image processing program |
| JP2009278470A (en) * | 2008-05-15 | 2009-11-26 | Ricoh Co Ltd | Image processing apparatus and image processing method |
| JP2010109572A (en) * | 2008-10-29 | 2010-05-13 | Toshiba Corp | Device and method of image processing |
| US8788782B2 (en) * | 2009-08-13 | 2014-07-22 | Qualcomm Incorporated | Apparatus and method for memory management and efficient data processing |
| JP2011056728A (en) * | 2009-09-08 | 2011-03-24 | Ricoh Co Ltd | Image forming apparatus, method for controlling image formation, image formation control program, and recording medium |
-
2014
- 2014-08-28 JP JP2014174641A patent/JP6204313B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2016051228A (en) | 2016-04-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9462091B2 (en) | Information processing apparatus, communication method and storage medium | |
| JP5895840B2 (en) | Multiprocessor system, execution control method, execution control program | |
| CN112486638B (en) | Method, apparatus, device and storage medium for executing processing tasks | |
| WO2017056725A1 (en) | In-vehicle control device | |
| CN106900082B (en) | Data processing method of sensor network node and sensor network node | |
| US9026697B2 (en) | Data processing apparatus | |
| JPWO2015194133A1 (en) | Arithmetic apparatus, arithmetic device control method, and arithmetic apparatus control program | |
| JPWO2010016169A1 (en) | Multiprocessor system and control method thereof | |
| US9172839B2 (en) | Image forming apparatus, control method and storage medium | |
| JP5993267B2 (en) | Image processing device | |
| JP2007128369A (en) | Data processing system and program | |
| JP2006338538A (en) | Stream processor | |
| JP6204313B2 (en) | Electronics | |
| JP5298154B2 (en) | Data processing apparatus and data processing program | |
| JP4170330B2 (en) | Information processing device | |
| JP2016031547A (en) | Signal transfer apparatus and signal transfer apparatus control method | |
| JP5097788B2 (en) | Data processing apparatus and data processing program | |
| JP4882116B2 (en) | Buffer control device and buffer control method | |
| JP2020017043A (en) | Node device, parallel computer system, and control method for parallel computer system | |
| CN107992328A (en) | The method, apparatus and system-on-chip of a kind of data processing | |
| US20080288952A1 (en) | Processing apparatus and device control unit | |
| JP4292218B2 (en) | Image processing apparatus and image processing system | |
| JP3959407B2 (en) | Image processing apparatus and image processing system | |
| JP2009129288A (en) | Data buffering device | |
| US9773291B2 (en) | Rendering processor |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160923 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170627 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170720 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170727 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170803 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170831 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6204313 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |