JP2013175074A - Execution method for a plurality of processes - Google Patents
Execution method for a plurality of processes Download PDFInfo
- Publication number
- JP2013175074A JP2013175074A JP2012039573A JP2012039573A JP2013175074A JP 2013175074 A JP2013175074 A JP 2013175074A JP 2012039573 A JP2012039573 A JP 2012039573A JP 2012039573 A JP2012039573 A JP 2012039573A JP 2013175074 A JP2013175074 A JP 2013175074A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- data
- read
- dma
- execution
- 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
Images
Landscapes
- Bus Control (AREA)
Abstract
Description
本発明は、複数処理実行方法に関する。特に、自身が割り込み制御機構を持たない、ホストCPUに制御されるプロセッサにおける複数処理の実行方法に関する。 The present invention relates to a multiple processing execution method. In particular, the present invention relates to a method for executing a plurality of processes in a processor controlled by a host CPU that does not have an interrupt control mechanism.
一般的に、予め定めた処理を実行する際に、ホストCPUでは性能が足りず、所望のシステム性能を満足できない場合、補助的に処理性能が高いプロセッサを用いて当該処理を行うことで、システム性能を満足させる方法がとられることがある。このような方法において、対象となる予め定めた処理が複数ある場合には、ホストCPUが実行する処理の優先度を決定し、プロセッサに対して最も優先度が高い処理を実行するよう指示を与える。そして、プロセッサは、指示された処理を完了したときに、ホストCPUに処理が完了したことを通知する。ホストCPUは、プロセッサから処理が完了した通知を受け取ると、プロセッサに対して次に優先度が高い処理を実行するよう指示を与える。このようなホストCPUとプロセッサとのハンドシェークを繰り返しながら、システムにおいて予め定められた複数の処理を実行する(非特許文献1参照)。 In general, when a predetermined process is executed, if the host CPU does not have sufficient performance and the desired system performance cannot be satisfied, the process is supplementarily performed by using a processor having high processing performance. A method may be taken to satisfy the performance. In such a method, when there are a plurality of predetermined processes to be processed, the priority of the process executed by the host CPU is determined, and an instruction is given to the processor to execute the process with the highest priority. . When the instructed process is completed, the processor notifies the host CPU that the process has been completed. When the host CPU receives a notification of completion of processing from the processor, the host CPU instructs the processor to execute processing with the next highest priority. While repeating such handshaking between the host CPU and the processor, a plurality of predetermined processes are executed in the system (see Non-Patent Document 1).
しかしながら、従来の技術を用いた方法では、システムにおいて実行する処理の数分だけ、ホストCPUとプロセッサとの間のハンドシェークが発生する。一般的に、ハンドシェークは、割り込み処理で行われるため、ホストCPUは、プロセッサから処理が完了した割り込みの通知を受け取ると、ハンドシェークの処理を行うために現在実行中の処理をそのつど中断しなければならない。このため、ハンドシェークに要する処理時間分だけシステム全体の性能が低下してしまう。 However, in the method using the conventional technique, handshaking between the host CPU and the processor occurs by the number of processes executed in the system. In general, handshaking is performed by interrupt processing. Therefore, when the host CPU receives a notification of completion of processing from the processor, the host CPU must interrupt the currently executing processing to perform handshaking processing. Don't be. For this reason, the performance of the entire system is reduced by the processing time required for handshaking.
また、プロセッサが処理を行う場合、プロセッサは、演算(処理)に必要なデータを取得(転送)し、取得したデータをプロセッサ内に備えた内蔵メモリに一時的に記憶する。そして、プロセッサは、内蔵メモリに記憶しているデータを用いてホストCPUから指示された演算を実行し、演算後のデータを出力(転送)する。しかし、プロセッサ内に備える内蔵メモリの容量は、あまり多くないことが想定される。これは、内蔵メモリの容量を多くすることによって、プロセッサの回路規模の増大を防ぐためである。このため、プロセッサは、演算に使用するデータ、または演算した後のデータを、複数回に分けて転送することになる。このとき、プロセッサで実行する処理の内容によっては、例えば、実際に演算を実行する時間よりも、演算に使用するデータを転送する時間の方が、今回実行する処理全体の時間に対して支配的である場合がある。このような場合には、演算に使用するデータの転送が完了するまでの間、プロセッサにおける実際の演算を行うことができず、プロセッサの演算が非効率的になってしまう。 Further, when the processor performs processing, the processor acquires (transfers) data necessary for calculation (processing), and temporarily stores the acquired data in a built-in memory provided in the processor. Then, the processor executes a calculation instructed by the host CPU using the data stored in the built-in memory, and outputs (transfers) the calculated data. However, it is assumed that the capacity of the built-in memory provided in the processor is not so large. This is to prevent an increase in the circuit scale of the processor by increasing the capacity of the built-in memory. For this reason, the processor transfers the data used for the calculation or the data after the calculation in a plurality of times. At this time, depending on the contents of the processing executed by the processor, for example, the time for transferring the data used for the operation is more dominant than the time for the entire processing to be executed this time than the time for actually executing the operation. It may be. In such a case, until the transfer of the data used for the operation is completed, the actual operation in the processor cannot be performed, and the operation of the processor becomes inefficient.
また逆に、プロセッサで実行する処理の内容によっては、例えば、演算に使用するデータを転送する時間よりも、実際に演算を実行する時間の方が、今回実行する処理全体の時間に対して支配的である場合もある。このような場合には、プロセッサにおける実際の演算が完了するまでの間、次に演算に使用するデータの転送を行うことができず、プロセッサのデータ転送が非効率的になってしまう。 On the other hand, depending on the contents of the processing executed by the processor, for example, the time for actually executing the operation dominates the time for the entire processing to be executed this time, rather than the time for transferring the data used for the operation. It can be the target. In such a case, data used for the next calculation cannot be transferred until the actual calculation in the processor is completed, and the data transfer of the processor becomes inefficient.
以下に、従来の技術を用いた方法によるハンドシェークやデータの転送と、システムの処理時間との関係について説明する。図8は、従来のシステムにおけるハンドシェークやデータの転送と、システムの処理時間との関係の一例を模式的に示した図である。図8には、処理Aおよび処理Bの2つの処理を行うシステムの場合を示している。図8において、処理Aは、データの転送時間よりも演算時間の方が長い処理であり、処理Bは、データの転送時間よりも演算時間の方が短い処理である。また、処理Aの方が、処理Bよりも優先度が高い処理である。従って、ホストCPUは、最初に処理Aをプロセッサに実行させ、処理Aが完了した後に処理Bをプロセッサに実行させる。また、図8に示したそれぞれの処理では、処理に使用するデータを3回に分けて取得し、取得したデータに基づいてそれぞれの処理の演算を実行する。なお、図8においては、演算後のデータの転送(出力)は省略している。 The relationship between the handshake and data transfer by the method using the conventional technique and the processing time of the system will be described below. FIG. 8 is a diagram schematically showing an example of the relationship between handshaking and data transfer in the conventional system and the processing time of the system. FIG. 8 shows a system that performs two processes of process A and process B. In FIG. 8, process A is a process having a calculation time longer than the data transfer time, and process B is a process having a calculation time shorter than the data transfer time. Further, the process A is a process having a higher priority than the process B. Accordingly, the host CPU first causes the processor to execute the process A, and after the process A is completed, causes the processor to execute the process B. Moreover, in each process shown in FIG. 8, the data used for a process are acquired in 3 steps, and the calculation of each process is performed based on the acquired data. In FIG. 8, data transfer (output) after calculation is omitted.
まず、システムにおける予め定めた処理を開始する処理開始信号がホストCPUに入力されると、ホストCPUは、プロセッサに対して処理Aを実行するよう指示を与える。プロセッサは、処理Aの実行開始の指示がホストCPUから入力されると、処理Aに使用するデータの転送(取得)を開始する。そして、プロセッサは、1回目の処理Aの演算を実行することができるだけのデータ転送が完了すると、転送されたデータに基づいて1回目の処理Aの演算を開始する。 First, when a process start signal for starting a predetermined process in the system is input to the host CPU, the host CPU instructs the processor to execute the process A. When an instruction to start execution of process A is input from the host CPU, the processor starts transfer (acquisition) of data used for process A. Then, when the data transfer that can execute the calculation of the first process A is completed, the processor starts the calculation of the first process A based on the transferred data.
この処理Aは、上述したように、データの転送時間よりも演算時間の方が長い処理である。このため、例えば、1回目の処理Aの演算が完了していないことによって、2回目のデータ転送に引き続いて3回目のデータ転送を開始することができない場合がある。この場合には、図8に示したように、1回目の処理Aの演算が完了した後に、3回目のデータ転送を開始することになる。すなわち、処理Aでは、1回目の処理Aの演算が完了するまで、3回目のデータ転送を開始することができず、データ転送の待ち時間(転送待ち時間)が発生してしまう。 As described above, the process A is a process in which the calculation time is longer than the data transfer time. For this reason, for example, there is a case where the third data transfer cannot be started following the second data transfer because the calculation of the first process A is not completed. In this case, as shown in FIG. 8, the third data transfer is started after the calculation of the first process A is completed. That is, in the process A, the third data transfer cannot be started until the calculation of the first process A is completed, and a data transfer waiting time (transfer waiting time) occurs.
その後、プロセッサは、処理Aの全てのデータ転送と演算とが完了すると、処理Aが完了した通知を、ホストCPUに出力する。 After that, when all the data transfer and calculation in the process A are completed, the processor outputs a notification that the process A is completed to the host CPU.
続いて、ホストCPUは、プロセッサから処理Aが完了した通知を受け取ると、ハンドシェークの処理を行い、その後、プロセッサに対して次の処理Bを実行するよう指示を与える。プロセッサは、処理Bの実行開始の指示がホストCPUから入力されると、処理Bに使用するデータの転送(取得)を開始する。そして、プロセッサは、1回目の処理Bの演算を実行することができるだけのデータ転送が完了すると、転送されたデータに基づいて1回目の処理Bの演算を開始する。 Subsequently, when the host CPU receives a notification that the process A has been completed from the processor, the host CPU performs a handshake process, and then instructs the processor to execute the next process B. When an instruction to start execution of process B is input from the host CPU, the processor starts transfer (acquisition) of data used for process B. When the data transfer sufficient to execute the first process B operation is completed, the processor starts the first process B operation based on the transferred data.
この処理Bは、上述したように、データの転送時間よりも演算時間の方が短い処理である。このため、例えば、1回目の処理Bの演算が完了した後、2回目の処理Bの演算を実行することができるだけのデータ転送が完了していない場合がある。この場合には、図8に示したように、2回目の処理Bの演算を実行することができるだけのデータ転送が完了した後に、2回目の処理Bの演算を開始することになる。すなわち、処理Bでは、2回目のデータ転送が完了するまで、2回目の処理Bの演算を開始することができず、演算の待ち時間(演算待ち時間)が発生してしまう。 As described above, the process B is a process in which the calculation time is shorter than the data transfer time. For this reason, for example, after the calculation of the first process B is completed, there is a case where the data transfer that can execute the calculation of the second process B is not completed. In this case, as shown in FIG. 8, the calculation of the second process B is started after the data transfer that can execute the calculation of the second process B is completed. That is, in the process B, the calculation of the second process B cannot be started until the second data transfer is completed, and a calculation waiting time (calculation waiting time) occurs.
その後、プロセッサは、処理Bの全てのデータ転送と演算とが完了すると、処理Bが完了した通知を、ホストCPUに出力する。ホストCPUは、プロセッサから処理Bが完了した通知を受け取ると、システムにおける予め定めた処理を完了する。 Thereafter, when all the data transfer and calculation of the process B are completed, the processor outputs a notification that the process B is completed to the host CPU. When the host CPU receives a notification that the process B is completed from the processor, the host CPU completes a predetermined process in the system.
このように、従来の技術を用いた方法によってシステムを構成した場合には、ハンドシェークや待ち時間のような、実際にデータに対する処理を行っていない時間が存在する。この実際にデータに対する処理を行っていない時間は、システムの性能を低下させる要因となってしまう、という問題がある。 As described above, when a system is configured by a method using a conventional technique, there is a time during which data is not actually processed, such as handshaking or waiting time. There is a problem that the time during which data is not actually processed becomes a factor that degrades the performance of the system.
本発明は、上記の課題認識に基づいてなされたものであり、複数の処理を実行するシステムにおいて、ハンドシェークが頻発することや、それぞれの処理内での待ち時間が発生することによるシステム性能の低下を低減することができる複数処理実行方法を提供することを目的としている。 The present invention has been made on the basis of the above-mentioned problem recognition, and in a system that executes a plurality of processes, the system performance deteriorates due to frequent handshaking and the occurrence of waiting time within each process. It is an object of the present invention to provide a multi-process execution method that can reduce the above-described problem.
上記の課題を解決するため、本発明の複数処理実行方法は、データを格納する外部メモリと、前記データに対して処理を施す複数の処理部と、複数の前記処理部のそれぞれに対応した複数のチャンネルを有し、それぞれのチャンネル毎に前記外部メモリにアクセスするDMA部と、を具備したプロセッサと、前記プロセッサに具備されたそれぞれの前記処理部による処理の実行を指示するホストCPUと、を備えたデータ処理システムにおける複数処理実行方法であって、前記ホストCPUによって実行が指示された前記処理部に対応する前記DMA部のデータ読み出し用チャンネルによって、前記外部メモリからの前記データの読み出しが全て完了した後に、該データ読み出し用チャンネルに、前記外部メモリからの次の前記データの読み出しを開始させるリードDMAステップと、前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しと並行して、前記ホストCPUによって実行が指示された前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させる複数処理実行ステップと、前記ホストCPUによって実行が指示された前記処理部に対応する前記DMA部のデータ書き込み用チャンネルに、該処理部が処理を完了した結果データの前記外部メモリへの書き込みを開始させるライトDMAステップと、を含む、ことを特徴とする。 In order to solve the above problems, a multiple processing execution method of the present invention includes an external memory that stores data, a plurality of processing units that perform processing on the data, and a plurality of processing units corresponding to the plurality of processing units, respectively. A processor that includes a plurality of channels and a DMA unit that accesses the external memory for each channel, and a host CPU that instructs execution of processing by each of the processing units included in the processor, A plurality of processing execution methods in the data processing system provided, wherein all of the reading of the data from the external memory is performed by the data reading channel of the DMA unit corresponding to the processing unit instructed to be executed by the host CPU. After completion, the next data read channel from the external memory is transferred to the data read channel. In parallel with the read DMA step for starting the data read and the next reading of the data from the external memory by the data read channel, the processing unit instructed to execute by the host CPU is sent from the external memory. The processing unit has completed processing on a plurality of processing execution steps for executing processing on the data that has been read and the data write channel of the DMA unit corresponding to the processing unit that is instructed to execute by the host CPU. A write DMA step for starting writing of the result data to the external memory.
また、本発明の前記リードDMAステップは、前記処理部が前記データに対する処理を実行するか否かの周期を表す、それぞれの前記処理部に対応した実行周期に基づいて、それぞれの前記処理部に対応する前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させるか否かを判定するリードDMA実行判定ステップ、を含み、次の前記データの読み出しを開始させると判定した前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させ、前記データの読み出しを開始させた前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しが全て完了した後に、次のリードDMA実行判定ステップを実行し、前記複数処理実行ステップは、前記リードDMA実行判定ステップによって次の前記データの読み出しを開始させるか否かを判定する前に前記データの読み出しを開始させた前記データ読み出し用チャンネルに対応する前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させ、前記ライトDMAステップは、前記データに対する処理を実行した前記処理部に対応する前記データ書き込み用チャンネルに、該処理部が処理を完了した前記結果データの前記外部メモリへの書き込みを開始させる、ことを特徴とする。 Further, the read DMA step of the present invention may be configured so that each of the processing units is based on an execution cycle corresponding to each of the processing units, which represents a cycle of whether or not the processing unit executes processing for the data. A read DMA execution determination step for determining whether or not to start reading the next data in the corresponding data read channel, and the data read channel determined to start reading the next data Next, the next read DMA execution determination step is started after reading of the next data from the external memory by the data read channel that has started reading the data is completed. The multiple processing execution step is executed by the read DMA execution determination step. Before determining whether or not to start reading of the next data, the processing unit corresponding to the data reading channel that has started reading of the data is processed with respect to the data that has been read from the external memory. The write DMA step writes the result data, which has been processed by the processing unit, to the external memory in the data write channel corresponding to the processing unit that has performed the processing on the data. It is characterized by starting.
また、本発明の前記リードDMA実行判定ステップは、前記データ読み出し用チャンネルによって前記データの読み出しを実行するか否かを表す、それぞれの前記データ読み出し用チャンネルに対応したDMA実行状態と、前記処理部によって前記データに対する処理を実行するか否かを表す、それぞれの前記処理部に対応した処理実行状態と、を設定し、次の前記データの読み出しを開始させるか否かを判定する前に、現在の前記DMA実行状態を、前記処理実行状態にコピーすることによって、前記データの読み出しを実行する前記データ読み出し用チャンネルに対応した前記処理部による前記データに対する処理を実行する状態とし、次の前記データの読み出しを開始させるか否かの判定において、前記実行周期が、前記処理部が前記データに対する処理を実行するタイミングであるときに、次の前記データの読み出しを開始させると判定し、次の前記データの読み出しを開始させると判定した前記データ読み出し用チャンネルに対応する前記DMA実行状態を、前記データの読み出しを実行する状態に更新し、前記実行周期が、前記処理部が前記データに対する処理を実行しないタイミングであるときに、次の前記データの読み出しを開始させないと判定し、次の前記データの読み出しを開始させないと判定した前記データ読み出し用チャンネルに対応する前記DMA実行状態を、前記データの読み出しを実行しない状態に更新し、次の前記データの読み出しを開始させるか否かの判定をした後に、前記DMA実行状態が、前記データの読み出しを実行する状態である前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させ、前記DMA実行状態が、前記データの読み出しを実行する状態である前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しが全て完了した後に、次の該リードDMA実行判定ステップを実行し、前記複数処理実行ステップは、前記処理実行状態が、前記データに対する処理を実行する状態である前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させ、前記ライトDMAステップは、前記処理実行状態が、前記データに対する処理を実行する状態である前記処理部に対応する前記データ書き込み用チャンネルに、該処理部が処理を完了した前記結果データの前記外部メモリへの書き込みを開始させる、ことを特徴とする。 In the read DMA execution determination step of the present invention, the DMA execution state corresponding to each data read channel, which indicates whether or not the data read is executed by the data read channel, and the processing unit The process execution state corresponding to each of the processing units, which indicates whether or not to execute the process on the data, and before determining whether to start reading the next data, By copying the DMA execution state of the data to the processing execution state, the processing unit corresponding to the data reading channel for executing the data reading is set to a state in which processing for the data is executed, and the next data In determining whether to start reading, the execution period is determined by the processing unit. The DMA execution state corresponding to the data read channel determined to start reading the next data and to start reading the next data when it is time to execute processing on the data Is updated to a state in which the data is read, and when the execution cycle is a timing at which the processing unit does not execute the process on the data, it is determined that reading of the next data is not started, and Whether or not to update the DMA execution state corresponding to the data read channel determined not to start reading the data to a state in which the data reading is not executed, and to start reading the next data After the determination, the DMA execution state is a state in which reading of the data is executed. The next data read from the external memory by the data read channel in which the DMA execution state is a state in which the data read is executed. Is completed, the next read DMA execution determination step is executed, and the multiple-process execution step sends the processing execution state from the external memory to the processing unit in which the process for the data is executed. The write DMA step performs processing on the data write channel corresponding to the processing unit in which the processing execution state is a state of executing processing on the data. Start writing the result data to the external memory after the processing is completed It is characterized by that.
また、本発明の複数処理実行方法は、さらに、予め計測した前記処理部が前記データに対する処理を実行する際に要する処理時間と、該処理部に対応した前記データ読み出し用チャンネルによって前記外部メモリからの前記データを読み出す際に要するデータ転送時間との差に基づいて、前記ホストCPUが前記プロセッサに実行を指示する前記処理部の組み合わせを決定する実行処理決定ステップと、前記ホストCPUによって実行が指示された前記処理部の組み合わせに応じて、組み合わされた該処理部のそれぞれが処理を実行する際に要する、該処理部に対応する前記データ読み出し用チャンネルによって読み出した前記データを一時的に記憶する内蔵メモリの容量を動的に確保するバッファ確保ステップと、を含み、前記複数処理実行ステップは、前記実行処理決定ステップによって組み合わされ、前記ホストCPUによって実行が指示されたそれぞれの前記処理部に、対応する前記データ読み出し用チャンネルによって前記外部メモリからの読み出しが完了したそれぞれの前記データに対する処理を実行させ、前記ライトDMAステップは、前記実行処理決定ステップによって組み合わされ、前記ホストCPUによって実行が指示されたそれぞれの前記処理部に対応する前記データ書き込み用チャンネルに、それぞれの該処理部が処理を完了したそれぞれの前記結果データの前記外部メモリへの書き込みを開始させる、ことを特徴とする。 Further, the multiple processing execution method of the present invention further includes a processing time required for the processing unit measured in advance to execute processing on the data, and the data read channel corresponding to the processing unit from the external memory. An execution process determining step in which the host CPU determines a combination of the processing units to instruct the processor to execute based on a difference from a data transfer time required for reading the data, and execution is instructed by the host CPU The data read by the data read channel corresponding to the processing unit, which is required when each of the combined processing units executes processing, is temporarily stored in accordance with the combination of the processing units that has been set. A buffer securing step for dynamically securing a capacity of the built-in memory, Steps are combined by the execution processing determination step, and each of the processing units instructed to be executed by the host CPU are processed with respect to each of the data that has been read from the external memory by the corresponding data read channel. The processing is executed, and the write DMA step is combined by the execution processing determination step, and the processing unit is connected to the data write channel corresponding to the processing unit instructed to be executed by the host CPU. The writing of each result data that has been processed to the external memory is started.
本発明によれば、複数の処理を実行するシステムにおいて、ハンドシェークが頻発することや、それぞれの処理内での待ち時間が発生することによるシステム性能の低下を低減することができるという効果が得られる。 According to the present invention, in a system that executes a plurality of processes, it is possible to reduce the deterioration in system performance due to frequent handshaking and the occurrence of waiting time in each process. .
<第1の実施形態>
以下、本発明の実施形態について、図面を参照して説明する。本第1の実施形態においては、例えば、デジタルスチルカメラなどの撮像装置に、本第1の実施形態の複数処理実行方法を適用した場合の一例について説明する。図1は、本第1の実施形態における複数処理実行方法を適用した撮像装置の概略構成を示したブロック図である。図1に示した撮像装置10は、レンズ1と、イメージャ2と、キャプチャ部3と、DRAM4と、画像処理プロセッサ5と、ホストCPU6と、画像処理部7と、記録部8と、メモリカード9と、を備えている。
<First Embodiment>
Hereinafter, embodiments of the present invention will be described with reference to the drawings. In the first embodiment, an example in which the multi-processing execution method of the first embodiment is applied to an imaging apparatus such as a digital still camera will be described. FIG. 1 is a block diagram illustrating a schematic configuration of an imaging apparatus to which the multiple processing execution method according to the first embodiment is applied. An
イメージャ2は、レンズ1によって結像された被写体の光学像を光電変換する固体撮像素子を備え、被写体光に応じた画像信号をキャプチャ部3に出力する。
キャプチャ部3は、イメージャ2から出力された画像信号をキャプチャし、キャプチャした画像信号を、入力画像データとしてDRAM4に格納する。また、キャプチャ部3は、入力画像データのDRAM4への格納が完了したときに、イメージャ2から出力された画像信号のキャプチャが完了したことを表す割り込み信号(以下、「キャプチャ完了信号」という)を、ホストCPU6に出力する。
The
The capture unit 3 captures the image signal output from the
ホストCPU6は、撮像装置10内の各構成要素をそれぞれ制御することによって、撮像装置10全体の制御を行う。また、ホストCPU6は、キャプチャ部3からキャプチャ完了信号が入力された後、画像処理プロセッサ5に予め定めたタスク(画像処理)を実行させるための指示(以下、「実行指示」という)を、画像処理プロセッサ5に出力する。また、ホストCPU6は、画像処理プロセッサ5から画像処理が完了したことを表す割り込み信号(以下、「終了割り込み信号」という)が入力された後、次に画像処理プロセッサ5に実行させる画像処理がある場合には、次のタスク(画像処理)を実行させるための実行指示を、画像処理プロセッサ5に出力する。
The
画像処理プロセッサ5は、ホストCPU6から入力された実行指示に応じて、今回実行するタスク(画像処理)に必要な画像データ(例えば、入力画像データ)をDRAM4から読み出し、読み出した画像データに対してホストCPU6から指示された画像処理を施す。そして、画像処理プロセッサ5は、画像処理を施した後の画像処理結果を、再びDRAM4に書き戻す。また、画像処理プロセッサ5は、画像処理結果のDRAM4への書き戻しが完了したときに、画像処理が完了したことを表す割り込み信号(以下、「終了割り込み信号」という)を、ホストCPU6に出力する。
The
なお、画像処理プロセッサ5は、DRAM4へのアクセスにおいて、DMA(Direct Memory Access)を用いる。すなわち、画像処理プロセッサ5によるDRAM4からの画像データの読み出しと、DRAM4への画像処理結果の書き戻しとは、DMAで行われる。また、画像処理プロセッサ5は、複数種類(例えば、N種類)の異なる画像処理を、画像データに対して同時期に(並行して)施すことができる。そのため、画像処理プロセッサ5は、それぞれの画像処理に応じた画像データを、DMAによってDRAM4から同時期に(並行して)読み出すことができ、それぞれの画像処理結果をDMAによってDRAM4に同時期に(並行して)書き戻すことができる。なお、画像処理プロセッサ5の構成、およびホストCPU6と画像処理プロセッサ5とによる画像処理の実行手順に関する詳細な説明は、後述する。
The
画像処理部7は、ホストCPU6から入力された実行指示に応じて、DRAM4に格納された画像処理結果を読み出し、読み出した画像処理結果に対して各種の画像処理を施す。そして、画像処理部7は、画像処理を施した後の画像処理結果を、出力画像データとして記録部8に出力する。
記録部8は、画像処理部7から入力された出力画像データに対して、メモリカード9に格納するための圧縮処理などを施して、記録用の画像データを生成する。そして、記録部8は、生成した記録用の画像データをメモリカード9に書き込む。
The
The recording unit 8 performs compression processing for storing in the
次に、撮像装置10において、本第1の実施形態の複数処理実行方法を実行するための構成について説明する。図2は、本第1の実施形態の複数処理実行方法の実行に係わる撮像装置10における概略構成を示したブロック図である。図2に示したように、本第1の実施形態の複数処理実行方法の実行に係わる撮像装置10の構成要素は、DRAM4と、画像処理プロセッサ5と、ホストCPU6とである。
Next, a configuration for executing the multiple processing execution method of the first embodiment in the
また、画像処理プロセッサ5は、上述したように、DMAによるDRAM4へのアクセス、およびDRAM4から読み出した画像データに対する画像処理を、同時期に(並行して)行うことができる。このため、画像処理プロセッサ5は、図2に示したように、DMAによってDRAM4にアクセスする複数チャンネルのDMA部51と、DMA部51がそれぞれのチャンネルでDRAM4から読み出したそれぞれの画像データに対して、それぞれの画像処理を施す複数種類(例えば、N種類)の画像処理演算部52とを備えている。
Further, as described above, the
DMA部51は、それぞれのチャンネル毎に、DMAによるDRAM4へのアクセスを行う。DMA部51は、DRAM4に格納されている画像データを読み出す際、DMAによって読み出した画像データを、画像処理プロセッサ5の内部に備える内蔵メモリ(不図示)に一時記憶する。また、DMA部51は、画像処理を施した後の画像処理結果をDRAM4に書き戻す際、内蔵メモリに一時記憶されている画像処理結果を、DMAによってDRAM4に格納する。
画像処理演算部52のそれぞれは、内蔵メモリに一時記憶されている画像データに対して画像処理を施し、画像処理を施した後の画像処理結果を、再び内蔵メモリに一時記憶する。
The
Each of the image
このような構成によって、画像処理プロセッサ5は、ホストCPU6から入力された実行指示に応じて、DMA部51が、対応するチャンネルのDMAによってDRAM4から画像データを読み出し、対応する画像処理演算部52が、読み出した画像データに対して画像処理を施す。そして、画像処理プロセッサ5は、DMA部51が、対応するチャンネルのDMAによって画像処理を施した後の画像処理結果をDRAM4に書き戻し、画像処理が完了したことを表す終了割り込み信号をホストCPU6に出力する。
With this configuration, in the
次に、撮像装置10における本第1の実施形態の複数処理実行方法の処理手順について説明する。図3は、本第1の実施形態における複数処理実行方法の処理手順を示したフローチャートである。図3に示したフローチャートでは、本第1の実施形態の複数処理実行方法におけるホストCPU6および画像処理プロセッサ5の動作を示している。なお、画像処理プロセッサ5は、上述したように、複数種類(例えば、N種類)の異なる画像処理を同時期に(並行して)施すことができる。以下の説明においては、入力画像データに対して2種類の異なる画像処理(処理Aおよび処理B)を、同時期に(並行して)施す場合の処理手順について説明する。
Next, a processing procedure of the multiple processing execution method of the first embodiment in the
撮像装置10の動作が開始されると、ホストCPU6は、複数処理実行の処理を開始する。複数処理実行の処理において、ホストCPU6は、まず、割り込み処理を実行する(ステップS1)。ステップS1の割り込み処理では、ホストCPU6が、撮像装置10内の各構成要素からの割り込み信号を受け付ける。その後、キャプチャ部3は、イメージャ2から出力された画像信号を1フレーム分キャプチャした入力画像データをDRAM4に格納すると、ホストCPU6にキャプチャ完了信号を出力する。
When the operation of the
ホストCPU6が、撮像装置10内の各構成要素からの割り込み信号を受け付けると、受け付けた割り込みの要因を判定する(ステップS2)。ステップS2において、割り込みの要因がキャプチャ部3からのキャプチャ完了信号である場合には、ホストCPU6は、画像処理プロセッサ5を起動する(ステップS3)。ホストCPU6が画像処理プロセッサ5を起動する際、ホストCPU6は、画像処理プロセッサ5に実行指示を出力するとともに、今回実行する2種類の画像処理がどの画像処理であるか、すなわち、複数種類(例えば、N種類)備えた画像処理演算部52の内、どの画像処理演算部52の演算を実行するかを表す情報を画像処理プロセッサ5に出力する。
When the
画像処理プロセッサ5は、ホストCPU6によって起動が指示される、すなわち、ホストCPU6から実行指示と実行する画像処理の情報が入力されると、指示された2種類の画像処理の実行を開始する。なお、画像処理プロセッサ5は、小容量の内蔵メモリしか持たないため、キャプチャ部3が1フレーム分キャプチャした入力画像データを、複数個(例えば、M個)に分割し、分割した入力画像データのそれぞれに対する画像処理を、分割した数分(例えば、M回)だけ繰り返すことによって、1フレーム分の画像処理を完了する。
When the
まず、画像処理プロセッサ5は、2種類の画像処理に必要な、分割した最初(1個目)の入力画像データ(1/Mの入力画像データ)をDRAM4から読み出すためのリードDMA(1回目のリードDMA)を起動する(ステップS5)。次に、画像処理プロセッサ5は、分割した処理の1回目のループにおいて、1回目のリードDMAの終了を待つ(ステップS6)。1回目のリードDMAが終了すると、画像処理プロセッサ5は、次(2個目)の入力画像データ(1/Mの入力画像データ)を事前にDRAM4から読み出すためのリードDMA(2回目のリードDMA)を起動する(ステップS7)。
First, the
画像処理プロセッサ5は、2回目のリードDMAによって2個目の入力画像データをDRAM4から読み出している間に、1個目の入力画像データに対する2種類の画像処理(処理Aおよび処理Bの演算)を、同時期に(並行して)実行する(ステップS8およびステップS9)。なお、図3に示したフローチャートでは、処理Aの演算(ステップS8)と処理Bの演算(ステップS9)とを、順次実行する場合の一例を示している。
The
その後、2種類の画像処理が完了すると、画像処理プロセッサ5は、今回の処理のループが1回目のループであるか否かを判定する(ステップS10)。ステップS10において、今回の処理のループが1回目のループである場合には、画像処理プロセッサ5は、1個目の入力画像データ(1/Mの入力画像データ)に対して画像処理を施した後のそれぞれの1個目の画像処理結果をDRAM4に書き戻すためのライトDMA(1回目のライトDMA)を起動する(ステップS12)。
Thereafter, when the two types of image processing are completed, the
なお、図3に示したフローチャートでは、処理Aの演算(ステップS8)と処理Bの演算(ステップS9)とを順次実行し、2種類の画像処理が完了した後にライトDMAを起動する(ステップS12)場合について説明した。しかし、画像処理を実行し、画像処理を施した後の画像処理結果をDRAM4に書き戻す手順は、図3に示したステップS8〜ステップS12までの処理手順のみに限定されるものではない。例えば、ライトDMAを起動させるための判断の処理(ステップS10)とライトDMAを起動させる処理(ステップS12)との負荷が小さく、ライトDMAによる画像処理結果のDRAM4への書き戻しに多くの時間を要しない場合もある。この場合には、処理Aの演算(ステップS8)、および処理Bの演算(ステップS9)が完了する毎に、ステップS10〜ステップS12までの処理を行う、すなわち、それぞれの画像処理が完了する毎に、画像処理を施した後の画像処理結果をDRAM4に書き戻す手順にすることもできる。
In the flowchart shown in FIG. 3, the calculation of the process A (step S8) and the calculation of the process B (step S9) are sequentially executed, and the write DMA is activated after the two types of image processing are completed (step S12). ) Explained the case. However, the procedure for executing the image processing and writing back the image processing result after the image processing to the
そして、画像処理プロセッサ5は、分割した処理の2回目のループにおいて、2回目のリードDMAの終了を待つ(ステップS6)。2回目のリードDMAが終了すると、画像処理プロセッサ5は、次(3個目)の入力画像データ(1/Mの入力画像データ)を事前にDRAM4から読み出すためのリードDMA(3回目のリードDMA)を起動する(ステップS7)。
Then, the
画像処理プロセッサ5は、3回目のリードDMAによって3個目の入力画像データをDRAM4から読み出している間に、2個目の入力画像データに対する2種類の画像処理(処理Aおよび処理Bの演算)を、同時期に(並行して)実行する(ステップS8およびステップS9)。
While the third input image data is being read from the
その後、2種類の画像処理が完了すると、画像処理プロセッサ5は、今回の処理のループが1回目のループであるか否かを判定する(ステップS10)。ステップS10において、今回の処理のループが1回目のループでない場合には、画像処理プロセッサ5は、1回目のライトDMAの終了を待つ(ステップS11)。1回目のライトDMAが終了すると、画像処理プロセッサ5は、2個目の入力画像データ(1/Mの入力画像データ)に対して画像処理を施した後のそれぞれの2個目の画像処理結果をDRAM4に書き戻すためのライトDMA(2回目のライトDMA)を起動する(ステップS12)。
Thereafter, when the two types of image processing are completed, the
以降、同様に、画像処理プロセッサ5は、ステップS6〜ステップS12までの処理を、入力画像データを分割した数分(例えば、M回)だけ繰り返す。その後、画像処理プロセッサ5は、ステップS6〜ステップS12までの処理の繰り返しを、入力画像データを分割した数と同じ回数行うと、すなわち、キャプチャ部3がキャプチャした1フレーム分の入力画像データに対する2種類の画像処理が完了すると、処理のループを抜け出し、最後のライトDMAの終了を待つ(ステップS13)。最後のライトDMAが終了する、すなわち、キャプチャ部3がキャプチャした1フレーム分の画像処理結果をDRAM4に書き戻すと、画像処理プロセッサ5は、終了割り込み信号をホストCPU6に出力する(ステップS14)。
Thereafter, similarly, the
ホストCPU6は、割り込み処理において、画像処理プロセッサ5からの終了割り込み信号を受け付ける(ステップS1)。ホストCPU6が、画像処理プロセッサ5からの終了割り込み信号を受け付けると、受け付けた割り込みの要因を判定する(ステップS2)。ここでは、ステップS2において、割り込みの要因が画像処理プロセッサ5からの終了割り込み信号であると判定されるため、ホストCPU6は、画像処理部7を起動し、画像処理プロセッサ5がDRAM4に書き戻した画像処理結果に対して各種の画像処理を施させる(ステップS4)。
In the interrupt process, the
ここで、本第1の実施形態の複数処理実行方法におけるハンドシェークやデータの転送と、システムの処理時間との関係について説明する。図4は、本第1の実施形態の複数処理実行方法におけるハンドシェークやデータの転送と、システムの処理時間との関係の一例を模式的に示した図である。図4には、処理Aおよび処理Bの2つの画像処理を行うシステムの場合を示している。図4において、処理Aは、データの転送時間よりも演算時間の方が長い画像処理であり、処理Bは、データの転送時間よりも演算時間の方が短い画像処理である。ホストCPU6は、画像処理プロセッサ5に、処理Aと処理Bとの2つの画像処理を、同時期に(並行して)実行させる。また、画像処理プロセッサ5は、それぞれの画像処理に必要な入力画像データを、複数個(例えば、M個)に分割して処理する。なお、図4においては、2種類の画像処理に必要な入力画像データ(1/Mの入力画像データ)をDRAM4から読み出すためのリードDMAの時間、およびそれぞれの画像処理における演算時間のみを示し、画像処理を施した後の画像処理結果をDRAM4に書き戻すためのライトDMAは省略している。
Here, the relationship between the handshake and data transfer in the multiple processing execution method of the first embodiment and the processing time of the system will be described. FIG. 4 is a diagram schematically illustrating an example of a relationship between handshaking and data transfer and system processing time in the multiple processing execution method of the first embodiment. FIG. 4 shows the case of a system that performs two image processes of process A and process B. In FIG. 4, process A is an image process whose calculation time is longer than the data transfer time, and process B is an image process whose calculation time is shorter than the data transfer time. The
まず、キャプチャ部3からのキャプチャ完了信号がホストCPU6に入力されると、ホストCPU6は、画像処理プロセッサ5に対して処理Aおよび処理Bの実行指示を出力する(図3のステップS1〜ステップS3参照)。画像処理プロセッサ5は、ホストCPU6から入力された実行指示に応じて、リードDMAを起動し、処理Aおよび処理Bに必要な、分割した最初(1個目)の入力画像データをDRAM4から読み出す。そして、次(2個目)の入力画像データのリードDMA(2回目のリードDMA)を起動する(図3のステップS5〜ステップS7参照)。
First, when a capture completion signal from the capture unit 3 is input to the
その後、画像処理プロセッサ5は、2回目のリードDMAによって2個目の入力画像データをDRAM4から読み出している間に、1個目の入力画像データに対する処理Aの演算および処理Bの演算を、同時期に(並行して)実行する(図3のステップS8およびステップS9参照)。なお、図4では、処理Aと処理Bとを、順次実行する場合の一例を示している。このとき、図4を見てわかるように、処理Aと処理Bとが連続的に実行されるため、一方の処理の待ち時間を、他方の処理で使用することができる。
After that, the
より具体的には、処理Aは、データの転送時間よりも演算時間の方が長い画像処理であるため、処理Aを連続的に実行すると、前回の演算が完了するまで次のデータ転送を開始することができないことによるデータ転送の待ち時間(転送待ち時間)が発生してしまうが、この転送待ち時間を処理BのDMA(データ転送)に使用することができる。また、処理Bは、データの転送時間よりも演算時間の方が短い画像処理であるため、処理Bを連続的に実行すると、前回のデータ転送が完了するまで次の演算を開始することができないことによる演算の待ち時間(演算待ち時間)が発生してしまうが、この演算待ち時間を処理Aの演算に使用することができる。 More specifically, since the process A is an image process in which the calculation time is longer than the data transfer time, if the process A is continuously executed, the next data transfer is started until the previous calculation is completed. Data transfer waiting time (transfer waiting time) due to the inability to do so occurs, and this transfer waiting time can be used for DMA (data transfer) of process B. Further, since the process B is an image process whose calculation time is shorter than the data transfer time, if the process B is continuously executed, the next calculation cannot be started until the previous data transfer is completed. The calculation waiting time (calculation waiting time) occurs, but this calculation waiting time can be used for the calculation of the process A.
なお、図4に示した一例では、処理Aおよび処理Bに必要な最初(1個目)の入力画像データのDRAM4からの読み出し、すなわち、処理Aに対応したチャンネルのリードDMAと、処理Bに対応したチャンネルのリードDMAとが終了した後に、処理Aの演算を開始する場合の一例を示している。これは、処理Aに対応したチャンネルのリードDMAと、処理Bに対応したチャンネルのリードDMAとが、同時期に(並行して)行われる、すなわち、2つのチャンネルのリードDMAが終了した時点で、処理Aおよび処理Bのそれぞれの演算に必要な入力画像データが揃う場合を示したものである。しかし、システムによるDMAの制御では、例えば、処理Aに対応したチャンネルのリードDMAがDRAM4からの入力画像データの読み出しを占有することができる場合がある。この場合には、処理Aに対応したチャンネルのリードDMAが先に終了し、処理Aに対応したチャンネルのリードDMAが終了した時点で、処理Aの演算に必要な入力画像データが揃うことになる。従って、このような場合には、処理Aに対応したチャンネルのリードDMAが終了した後に、先に処理Aの演算を開始し、その後、処理Bに対応したチャンネルのリードDMAが終了した後に、処理Bの演算を開始することができる。このようにすると、全ての処理Aおよび処理Bが終了するまでの時間、すなわち、処理Aおよび処理Bを実行している期間を短くすることもできる。
In the example shown in FIG. 4, the first (first) input image data required for the process A and the process B is read from the
上記に述べたように、本第1の実施形態の複数処理実行方法を適用した撮像装置10では、ホストCPU6が、画像処理プロセッサ5に複数種類(例えば、N種類)の異なる画像処理を、同時期に(並行して)施させる。これにより、画像処理プロセッサ5は、複数種類(例えば、N種類)の画像処理に対応するリードDMAおよびライトDMAを一纏めにして同時期に(並行して)起動し、複数種類(例えば、N種類)の画像処理を、同時期に(並行して)実行する。すなわち、本第1の実施形態の複数処理実行方法では、複数種類(例えば、N種類)の異なる画像処理を一纏めにして、対応するデータ転送(DMA)と、それぞれの画像処理の演算とを連続的に実行する。これにより、本第1の実施形態の複数処理実行方法では、従来のプロセッサの処理において、それぞれの処理を単体で実行することで、システムの性能を低下させてしまう要因となっていたデータ転送や演算の待ち時間を、同時期に(並行して)実行している他の処理を実行する時間に充てることができる。このことにより、本第1の実施形態の複数処理実行方法では、システム全体の処理における待ち時間を少なくし、システム性能の低下を防止することができる。
As described above, in the
また、本第1の実施形態の複数処理実行方法では、複数種類(例えば、N種類)の異なる画像処理を一纏めにして、同時期に(並行して)施させるため、ハンドシェークの処理の回数を削減することができる。すなわち、本第1の実施形態の複数処理実行方法では、従来のプロセッサの処理において、それぞれの処理を単体で実行するたびに行われているハンドシェークの処理の回数を、同時期に(並行して)実行する複数種類(例えば、N種類)の処理毎に1回に削減することができる。このことにより、本第1の実施形態の複数処理実行方法では、システム全体の処理におけるハンドシェークに要する処理時間を少なくし、システム性能の低下をさらに防止することができる。 Further, in the multiple processing execution method of the first embodiment, a plurality of types (for example, N types) of different image processing are grouped and performed at the same time (in parallel). Can be reduced. That is, in the multi-process execution method of the first embodiment, in the conventional processor process, the number of handshake processes performed each time each process is executed alone is set at the same time (in parallel). ) It can be reduced once for each of a plurality of types (for example, N types) of processing to be executed. As a result, in the multiple processing execution method of the first embodiment, the processing time required for handshaking in the processing of the entire system can be reduced, and deterioration in system performance can be further prevented.
なお、本第1の実施形態の複数処理実行方法は、画像処理プロセッサ5において同時期に(並行して)実行するそれぞれの画像処理に必要な画像データが、同じ分割数に分割されている場合に有効である。しかし、撮像装置10においては、全ての画像処理で使用する画像データが、同じ分割数に分割されているとは限らない。また、同時期に(並行して)実行するそれぞれの画像処理で処理する画像データが、異なる構成要素が生成した画像データであることも考えられる。
Note that the multi-processing execution method of the first embodiment is when the image data required for each image processing to be executed at the same time (in parallel) in the
<第2の実施形態>
次に、本発明の第2の実施形態の複数処理実行方法について説明する。以下の説明においては、第1の実施形態と同様に、本第2の実施形態の複数処理実行方法を、撮像装置10に適用した場合について説明する。なお、本第2の実施形態の複数処理実行方法を適用した撮像装置10、および本第2の実施形態の複数処理実行方法の実行に係わる撮像装置10における概略構成は、図1および図2に示した第1の実施形態の複数処理実行方法を適用した撮像装置10と同様であるため、詳細な説明は省略する。従って、以下の説明においては、図1および図2に示した第1の実施形態の複数処理実行方法を適用した撮像装置10が、本第2の実施形態の複数処理実行方法を実行するものとして説明を行う。本第2の実施形態の複数処理実行方法は、撮像装置10に備えた画像処理プロセッサ5が、それぞれの画像処理に使用する画像データを異なる分割数に分割して処理する場合に有効である。
<Second Embodiment>
Next, a multiple processing execution method according to the second embodiment of the present invention will be described. In the following description, similarly to the first embodiment, a case where the multi-processing execution method of the second embodiment is applied to the
まず、画像処理プロセッサ5における画像データの分割方法について説明する。図5は、本第2実施形態の複数処理実行方法を適用した撮像装置10におけるデータの分割方法の一例を模式的に示した図である。図5(a)には、画像データの分割数が、同時期に(並行して)実行する異なる画像処理で同じ場合を示し、図5(b)には、画像データの分割数が、同時期に(並行して)実行する異なる画像処理で異なる場合を示している。
First, a method for dividing image data in the
図5(a)に示した一例では、処理Aにおいて処理する画像データと、処理Bにおいて処理する縮小画像データとが、どちらも横方向の短冊に分割されて処理される、すなわち、処理Aおよび処理Bによってそれぞれ画像処理する1フレーム内の短冊の数は、いずれも同じである。このように、画像処理に使用する画像データが同じ分割数に分割されている場合には、それぞれの画像処理において処理する画像データの大きさが異なる大きさであっても、それぞれの画像処理を同時期に終了することができる。すなわち、図3に示した第1の実施形態の複数処理実行方法の処理手順におけるステップS6〜ステップS12までの処理のループを実行する回数は、画像データを分割した数分となる。 In the example shown in FIG. 5A, the image data to be processed in the process A and the reduced image data to be processed in the process B are both processed by being divided into horizontal strips. The number of strips in one frame subjected to image processing by processing B is the same. Thus, when the image data used for image processing is divided into the same number of divisions, each image processing is performed even if the size of the image data processed in each image processing is different. It can end at the same time. That is, the number of executions of the processing loop from step S6 to step S12 in the processing procedure of the multiple processing execution method of the first embodiment shown in FIG. 3 is equal to the number of divided image data.
一方、図5(b)に示した一例では、処理Aにおいて画像データがブロック単位で処理されるのに対し、処理Bにおいては、縮小画像データが横方向の短冊単位で処理される、すなわち、処理Aおよび処理Bが1フレームの画像データを画像処理する際のそれぞれの処理単位が、処理Aと処理Bとで異なる。例えば、図5(b)に示した処理Aのブロックが、処理Bの短冊を横方向に4分割したものであれば、処理Aと処理Bとにおける1フレームの分割数の比は、処理A:処理B=4:1となる。 On the other hand, in the example shown in FIG. 5B, the image data is processed in units of blocks in the process A, whereas the reduced image data is processed in units of horizontal strips in the process B. The processing units when the processing A and the processing B perform image processing on one frame of image data are different between the processing A and the processing B. For example, if the block of process A shown in FIG. 5B is obtained by dividing the strip of process B into four in the horizontal direction, the ratio of the number of divisions of one frame between process A and process B is the process A : Processing B = 4: 1
このように、処理に使用する画像データが異なる分割数に分割されている場合には、図3に示した第1の実施形態の複数処理実行方法であると、それぞれの画像処理において処理する画像データの大きさに係わらず、それぞれの画像処理を同時期に終了することができない。すなわち、図5(b)に示した処理Aにおける画像データの分割数分の回数に合わせて、図3に示した第1の実施形態の複数処理実行方法の処理手順におけるステップS6〜ステップS12までの処理のループを実行すると、処理Bで不要な処理を実行してしまうことになる。また、逆に、図5(b)に示した処理Bにおける画像データの分割数分の回数に合わせて、図3に示した第1の実施形態の複数処理実行方法の処理手順におけるステップS6〜ステップS12までの処理のループを実行すると、処理Aによる画像処理が終わらない、すなわち、1フレーム分の画像データの全てに対して処理Aが実行されないことになる。 As described above, when the image data used for processing is divided into different numbers of divisions, the image to be processed in each image processing is the multi-processing execution method of the first embodiment shown in FIG. Regardless of the size of the data, each image processing cannot be completed at the same time. That is, from step S6 to step S12 in the processing procedure of the multiple processing execution method of the first embodiment shown in FIG. 3 according to the number of times of the number of divisions of the image data in the processing A shown in FIG. When the process loop is executed, an unnecessary process is executed in the process B. Conversely, steps S6 to S6 in the processing procedure of the multiple processing execution method of the first embodiment shown in FIG. 3 are matched with the number of times of the number of divisions of the image data in the processing B shown in FIG. When the processing loop up to step S12 is executed, the image processing by the processing A does not end, that is, the processing A is not executed for all the image data for one frame.
このため、本第2の実施形態の複数処理実行方法では、図3に示した第1の実施形態の複数処理実行方法の処理手順におけるステップS6〜ステップS12までの処理のループに対応する処理のループ内で、同時期に(並行して)実行する異なる画像処理における画像データの分割数に応じて、それぞれの画像処理を実行するが否かを切り替える。 Therefore, in the multiple processing execution method of the second embodiment, the processing corresponding to the processing loop from step S6 to step S12 in the processing procedure of the multiple processing execution method of the first embodiment shown in FIG. In the loop, whether or not each image processing is executed is switched according to the number of divisions of the image data in different image processing executed simultaneously (in parallel).
次に、撮像装置10における本第2の実施形態の複数処理実行方法の処理手順について説明する。図6は、本第2の実施形態における複数処理実行方法の処理手順を示したフローチャートである。図6に示したフローチャートでは、本第2の実施形態の複数処理実行方法におけるホストCPU6および画像処理プロセッサ5の動作を示している。なお、画像処理プロセッサ5は、上述したように、複数種類(例えば、N種類)の異なる画像処理を同時期に(並行して)施すことができる。以下の説明においては、入力画像データを異なる分割数で処理する2種類の異なる画像処理(処理Aおよび処理B)を、同時期に(並行して)施す場合の処理手順について説明する。
Next, the processing procedure of the multiple processing execution method of the second embodiment in the
ここで、処理Aは画像データをブロック単位で処理し、処理Bは画像データを横方向の短冊単位で処理するものとし、処理Aのブロックが、処理Bの短冊を横方向に2分割したもの、すなわち、処理Aと処理Bとにおける1フレームの分割数の比が、処理A:処理B=2:1であるものとする(図5(b)参照)。 Here, process A is a process in which image data is processed in units of blocks, process B is a process in which image data is processed in units of horizontal strips, and a block of process A is obtained by dividing the strip of process B into two in the horizontal direction. That is, it is assumed that the ratio of the number of divisions of one frame in process A and process B is process A: process B = 2: 1 (see FIG. 5B).
撮像装置10の動作が開始されると、ホストCPU6は、複数処理実行の処理を開始する。複数処理実行の処理において、ホストCPU6は、まず、割り込み処理を実行する(ステップS101)。ステップS101の割り込み処理では、ホストCPU6が、撮像装置10内の各構成要素からの割り込み信号を受け付ける。その後、キャプチャ部3は、イメージャ2から出力された画像信号を1フレーム分キャプチャした入力画像データをDRAM4に格納すると、ホストCPU6にキャプチャ完了信号を出力する。
When the operation of the
ホストCPU6が、撮像装置10内の各構成要素からの割り込み信号を受け付けると、受け付けた割り込みの要因を判定する(ステップS102)。ステップS102において、割り込みの要因がキャプチャ部3からのキャプチャ完了信号である場合には、ホストCPU6は、画像処理プロセッサ5を起動する(ステップS103)。ホストCPU6が画像処理プロセッサ5を起動する際、ホストCPU6は、画像処理プロセッサ5に実行指示を出力するとともに、今回実行する2種類の画像処理がどの画像処理であるか、すなわち、複数種類(例えば、N種類)備えた画像処理演算部52の内、どの画像処理演算部52の演算を実行するかを表す情報を画像処理プロセッサ5に出力する。
When the
画像処理プロセッサ5は、ホストCPU6によって起動が指示される、すなわち、ホストCPU6から実行指示と実行する画像処理の情報が入力されると、指示された2種類の画像処理の実行を開始する。なお、画像処理プロセッサ5は、小容量の内蔵メモリしか持たないため、キャプチャ部3が1フレーム分キャプチャした入力画像データを、それぞれの処理に応じた複数個に分割し、分割した入力画像データのそれぞれに対する画像処理を、それぞれの処理に応じて分割した数分だけ繰り返すことによって、1フレーム分の画像処理を完了する。以下の説明においては、処理Aの画像処理における入力画像データの分割数を分割数Ma、処理Bの画像処理における入力画像データの分割数を分割数Mbとし、今回実行する全ての画像処理(処理Aおよび処理B)における入力画像データの分割数の最大値を、分割数MAXとする。また、処理Aの分割数Maが、分割数MAXであるとする。
When the
まず、画像処理プロセッサ5は、2種類の画像処理のそれぞれに必要な、分割した最初(1個目)の入力画像データ(1/Maの入力画像データ、および1/Mbの入力画像データ)をDRAM4から読み出すため、2種類の画像処理のそれぞれに対応した全てのチャンネルのリードDMA(1回目のリードDMA)を起動する(ステップS105)。次に、画像処理プロセッサ5は、処理Aおよび処理Bのそれぞれに対応したチャンネルのリードDMAを起動したか否かを表すDMA実行状態のフラグ(以下、「プレフラグ」という)を全てON(リードDMAを起動した状態)にする(ステップS106)。
First, the
続いて、画像処理プロセッサ5は、分割数MAX分の回数(仮に、“i”とする)だけ繰り返すループ(i)の1回目(i=1)の処理において、プレフラグがONである処理(ここでは、処理Aおよび処理B)に対応したチャンネルの1回目のリードDMAの終了を待つ(ステップS107)。1回目のリードDMAが終了すると、画像処理プロセッサ5は、処理Aおよび処理Bのそれぞれに対応し、処理の演算を実行するか否かを表す処理実行状態のフラグ(以下、「ポストフラグ」という)に、プレフラグの状態をコピーする(ステップS108)。
Subsequently, the
続いて、画像処理プロセッサ5は、同時期に(並行して)実行する画像処理の種類(仮に、“j”とする)だけ繰り返すループ(j)において、それぞれの画像処理毎に、次(2個目)の入力画像データを事前にDRAM4から読み出すためのリードDMA(2回目のリードDMA)を起動するか否かを判定する(ステップS109)。この判定では、分割数MAX分の回数iだけ繰り返すループ(i)のカウント値を、それぞれの画像処理を実行する周期(以下、「実行周期T」という)で除算したときの余りを算出する。そして、余りが“0”のときに、事前にDRAM4から読み出すためのリードDMA(2回目のリードDMA)を起動し、余りが“0”以外のときに、事前にDRAM4から読み出すためのリードDMA(2回目のリードDMA)を起動しないと判定する。なお、実行周期Tは、分割数MAX分の回数iだけ繰り返すループ(i)において、それぞれの画像処理の演算を何回に1回実行するかを表す値であり、分割数MAXを、それぞれの画像処理における入力画像データの分割数で除算した商である。
Subsequently, the
例えば、処理Aの分割数Ma=10、処理Bの分割数Mb=5である場合を考える。この場合、分割数MAX=10である。このとき、処理Aに対応した実行周期T(以下「実行周期Ta」という)は、分割数MAX=分割数Maであるため、実行周期Ta=10/10=1である。すなわち、処理Aは、1回に1回実行、すなわち、毎回実行することになる。また、処理Bに対応した実行周期T(以下「実行周期Tb」という)は、分割数MAX≠分割数Mbであり、実行周期Tb=10/5=2である。すなわち、処理Bは、2回に1回実行することになる。 For example, consider a case where the division number Ma of process A = 10 and the division number Mb of process B = 5. In this case, the division number MAX = 10. At this time, the execution cycle T (hereinafter referred to as “execution cycle Ta”) corresponding to the process A is the number of divisions MAX = the number of divisions Ma, so the execution cycle Ta = 10/10 = 1. That is, the process A is executed once at a time, that is, executed every time. Further, the execution cycle T (hereinafter referred to as “execution cycle Tb”) corresponding to the process B is the division number MAX ≠ the division number Mb, and the execution cycle Tb = 10/5 = 2. That is, the process B is executed once every two times.
そして、1回目のループ(j=1)では、1つ目(j=1)の画像処理である処理Aに必要な、次(2個目)の入力画像データ(1/Maの入力画像データ)を事前にDRAM4から読み出すために、処理Aに対応したチャンネルのリードDMA(2回目のリードDMA)を起動するか否かを判定する。ここでは、ループ(i)のカウント値(ここでは、i=1)を実行周期Ta=1で除算したときの余りは“0”になるため、処理Aに対応したチャンネルのリードDMAを起動すると判定する。
In the first loop (j = 1), the next (second) input image data (1 / Ma input image data) necessary for the process A, which is the first (j = 1) image processing. ) Is read from the
また、2回目のループ(j=2)では、2つ目(j=2)の画像処理である処理Bに必要な、次(2個目)の入力画像データ(1/Mbの入力画像データ)を事前にDRAM4から読み出すために、処理Bに対応したチャンネルのリードDMA(2回目のリードDMA)を起動するか否かを判定する。ここでは、ループ(i)のカウント値(ここでは、i=1)を実行周期Tb=2で除算したときの余りは“0”以外になるため、処理Bに対応したチャンネルのリードDMAを起動しないと判定する。
In the second loop (j = 2), the next (second) input image data (1 / Mb input image data) necessary for the second (j = 2) image processing B ) Is read from the
ステップS109において、処理に対応したチャンネルのリードDMAを起動すると判定した場合には、対応するプレフラグをON(リードDMAを起動する状態)にし(ステップS110)、処理に対応したチャンネルのリードDMAを起動しないと判定した場合には、対応するプレフラグをOFF(リードDMAを起動しない状態)にする(ステップS111)。 If it is determined in step S109 that the read DMA of the channel corresponding to the process is to be activated, the corresponding pre-flag is turned ON (read DMA is activated) (step S110), and the read DMA of the channel corresponding to the process is activated. If it is determined not to do so, the corresponding pre-flag is turned OFF (read DMA is not activated) (step S111).
ステップS109〜ステップS111のループ(j)では、上述した次の入力画像データを事前にDRAM4から読み出すためのリードDMAを起動するか否かの判定と、それぞれの処理に対応するプレフラグの変更とを、同時期に(並行して)実行する画像処理の種類だけ繰り返す。そして、同時期に(並行して)実行するそれぞれの画像処理に対する判定が完了すると、ループ(j)を抜け出す。
In the loop (j) from step S109 to step S111, it is determined whether or not to start the read DMA for reading the next input image data from the
続いて、画像処理プロセッサ5は、プレフラグがONであるチャンネル、すなわち、事前にDRAM4から読み出すためのリードDMAを起動すると判定された処理に対応するチャンネルのリードDMA(2回目のリードDMA)を起動する(ステップS112)。
ここでは、ステップS109〜ステップS111の処理の結果に応じて、処理Aに対応したチャンネルのリードDMAのみが起動される。
Subsequently, the
Here, only the read DMA of the channel corresponding to the process A is activated according to the results of the processes in steps S109 to S111.
画像処理プロセッサ5は、処理Aに対応したチャンネルの2回目のリードDMAによって2個目の入力画像データをDRAM4から読み出している間に、ポストフラグがON(演算を実行する状態)になっている処理の1個目の入力画像データに対するそれぞれの画像処理の演算を同時期に(並行して)実行する。ここでは、処理Aに必要な2個目の入力画像データ(1/Maの入力画像データ)をDRAM4から読み出している間に、1個目の入力画像データ(1/Maの入力画像データ、および1/Mbの入力画像データ)に対する2種類の画像処理(処理Aおよび処理Bの演算)を、同時期に(並行して)実行する(ステップS113およびステップS114)。なお、図6に示したフローチャートでは、処理Aの演算(ステップS113)と処理Bの演算(ステップS114)とを、順次実行する場合の一例を示している。
In the
その後、2種類の画像処理が完了すると、画像処理プロセッサ5は、今回のループ(i)が1回目のループ(i=1)であるか否かを判定する(ステップS115)。ステップS115において、今回のループ(i)が1回目のループ(i=1)である場合には、画像処理プロセッサ5は、ポストフラグがON(演算を実行する状態)になっている処理の1個目の入力画像データに対して画像処理を施した後の1個目の画像処理結果をDRAM4に書き戻すためのライトDMA(1回目のライトDMA)を起動する(ステップS117)。ここでは、1個目の入力画像データ(1/Maの入力画像データ、および1/Mbの入力画像データ)に対して処理Aおよび処理Bの演算を施しているため、処理Aおよび処理Bのそれぞれに対応したチャンネルのライトDMA(1回目のライトDMA)が起動される。
Thereafter, when the two types of image processing are completed, the
なお、図6に示したフローチャートでは、処理Aの演算(ステップS113)と処理Bの演算(ステップS114)とを順次実行し、2種類の画像処理が完了した後に、それぞれの処理に対応するチャンネルのライトDMAを起動する(ステップS117)場合について説明した。しかし、画像処理を実行し、画像処理を施した後の画像処理結果をDRAM4に書き戻す手順は、図6に示したステップS113〜ステップS117までの処理手順のみに限定されるものではない。例えば、図3に示した第1の実施形態の複数処理実行方法の処理手順におけるステップS8〜ステップS12までの処理と同様に、それぞれの画像処理が完了する毎に、画像処理を施した後の画像処理結果をDRAM4に書き戻す手順にすることもできる。
In the flowchart shown in FIG. 6, the calculation of process A (step S113) and the calculation of process B (step S114) are sequentially executed, and after two types of image processing are completed, the channels corresponding to the respective processes are executed. The case where the write DMA is activated (step S117) has been described. However, the procedure for executing the image processing and writing back the image processing result after the image processing to the
そして、画像処理プロセッサ5は、分割数MAX分の回数iだけ繰り返すループ(i)の2回目(i=2)の処理において、プレフラグがONである処理(ここでは、処理Aのみ)に対応したチャンネルの2回目のリードDMAの終了を待つ(ステップS107)。2回目のリードDMAが終了すると、画像処理プロセッサ5は、ポストフラグにプレフラグの状態(ここでは、処理AのみがONになっている)をコピーする(ステップS108)。
The
続いて、画像処理プロセッサ5は、同時期に(並行して)実行する画像処理の種類だけ繰り返すループ(j)において、それぞれの画像処理毎に、次(3個目または2個目)の入力画像データを事前にDRAM4から読み出すためのリードDMA(3回目または2回目のリードDMA)を起動するか否かを判定する(ステップS109)。
Subsequently, the
ここでは、2回目のループ(j=2)であるため、1つ目(j=1)の画像処理である処理Aに必要な、次(3個目)の入力画像データ(1/Maの入力画像データ)を事前にDRAM4から読み出すために、処理Aに対応したチャンネルのリードDMA(3回目のリードDMA)を起動するか否かを判定する。また、2つ目(j=2)の画像処理である処理Bに必要な、次(2個目)の入力画像データ(1/Mbの入力画像データ)を事前にDRAM4から読み出すために、処理Bに対応したチャンネルのリードDMA(2回目のリードDMA)を起動するか否かを判定する。
Here, since it is the second loop (j = 2), the next (third) input image data (1 / Ma) required for the process A which is the first (j = 1) image processing. In order to read the input image data) from the
例えば、処理Aの分割数Ma=10、処理Bの分割数Mb=5、分割数MAX=10である場合、ステップS109では、2回目のループ(i)のカウント値(ここでは、i=2)を実行周期Ta=1で除算したときの余りは“0”になるため、処理Aに対応したチャンネルのリードDMAを起動すると判定する。また、2回目のループ(i)のカウント値(ここでは、i=2)を実行周期Tb=2で除算したときの余りは“0”になるため、処理Bに対応したチャンネルのリードDMAも起動すると判定する。 For example, if the division number Ma of process A = 10, the division number Mb of process B = 5, and the division number MAX = 10, in step S109, the count value of the second loop (i) (here, i = 2) ) Is divided by the execution cycle Ta = 1, the remainder is “0”, and it is determined that the read DMA of the channel corresponding to the process A is activated. Since the remainder when the count value (here i = 2) of the second loop (i) is divided by the execution cycle Tb = 2 is “0”, the read DMA of the channel corresponding to the process B is also performed. Determine to start.
そして、ステップS109において、処理に対応したチャンネルのリードDMAを起動すると判定した処理Aおよび処理Bに対応するプレフラグをON(リードDMAを起動する状態)にする(ステップS110)。そして、同時期に(並行して)実行するそれぞれの画像処理に対する判定が完了すると、ループ(j)を抜け出す。 In step S109, the pre-flag corresponding to process A and process B determined to activate the read DMA of the channel corresponding to the process is set to ON (read DMA is activated) (step S110). When the determination for each image processing executed at the same time (in parallel) is completed, the loop (j) is exited.
続いて、画像処理プロセッサ5は、プレフラグがONであるチャンネル、すなわち、事前にDRAM4から読み出すためのリードDMAを起動すると判定された、処理Aに対応するチャンネルのリードDMA(3回目のリードDMA)と、処理Bに対応するチャンネルのリードDMA(2回目のリードDMA)とを起動する(ステップS112)。
Subsequently, the
画像処理プロセッサ5は、処理Aおよび処理Bに対応したチャンネルのリードDMAによって入力画像データをDRAM4から読み出している間に、ポストフラグがON(演算を実行する状態)になっている処理の2個目の入力画像データに対するそれぞれの画像処理の演算を同時期に(並行して)実行する。ここでは、処理Aに必要な3個目の入力画像データ(1/Maの入力画像データ)と、処理Bに必要な2個目の入力画像データ(1/Mbの入力画像データ)とをDRAM4から読み出している間に、2個目の入力画像データ(1/Maの入力画像データ)に対する処理Aの演算を実行する(ステップS113)。なお、処理Bの演算(ステップS114)は実行しない。
The
その後、処理Aの画像処理が完了すると、画像処理プロセッサ5は、今回のループ(i)が1回目のループ(i=1)であるか否かを判定する(ステップS115)。ステップS115において、今回のループ(i)が1回目のループ(i=1)でない場合には、画像処理プロセッサ5は、ポストフラグがON(演算を実行する状態)になっている処理の1回目のライトDMAの終了を待つ(ステップS111)。ここでは、ポストフラグが処理AのみONになっているので、処理Aの1回目のライトDMAの終了を待つ。
Thereafter, when the image processing of process A is completed, the
処理Aの1回目のライトDMAが終了すると、画像処理プロセッサ5は、ポストフラグがON(演算を実行する状態)になっている処理の2個目の入力画像データに対して画像処理を施した後の2個目の画像処理結果をDRAM4に書き戻すためのライトDMA(2回目のライトDMA)を起動する(ステップS117)。ここでは、ポストフラグが処理AのみONになっているため、2個目の入力画像データ(1/Maの入力画像データ)に対して画像処理を施した処理Aの2個目の画像処理結果をDRAM4に書き戻すため、処理Aに対応したチャンネルのライトDMA(3回目のライトDMA)が起動される。
When the first write DMA of the process A is completed, the
以降、同様に、画像処理プロセッサ5は、ステップS107〜ステップS117までのループ(i)の処理を、今回実行する全ての画像処理における入力画像データの最大の分割数の数分(分割数MAX分の回数i)だけ繰り返す。その後、画像処理プロセッサ5は、ステップS107〜ステップS117までのループ(i)の処理の繰り返しを、分割数MAXと同じ回数iだけ行うと、すなわち、キャプチャ部3がキャプチャした1フレーム分の入力画像データに対する2種類の画像処理が完了すると、処理のループを抜け出す。そして、画像処理プロセッサ5は、ポストフラグがON(演算を実行する状態)になっている処理の最後のライトDMAの終了を待つ(ステップS118)。ポストフラグがONになっている処理の最後のライトDMAが終了する、すなわち、キャプチャ部3がキャプチャした1フレーム分の画像処理結果をDRAM4に書き戻すと、画像処理プロセッサ5は、終了割り込み信号をホストCPU6に出力する(ステップS119)。
Thereafter, similarly, the
ホストCPU6は、割り込み処理において、画像処理プロセッサ5からの終了割り込み信号を受け付ける(ステップS101)。ホストCPU6が、画像処理プロセッサ5からの終了割り込み信号を受け付けると、受け付けた割り込みの要因を判定する(ステップS102)。ここでは、ステップS102において、割り込みの要因が画像処理プロセッサ5からの終了割り込み信号であると判定されるため、ホストCPU6は、画像処理部7を起動し、画像処理プロセッサ5がDRAM4に書き戻した画像処理結果に対して各種の画像処理を施させる(ステップS104)。
In the interrupt process, the
上記に述べたように、本第2の実施形態の複数処理実行方法を適用した撮像装置10では、画像処理プロセッサ5が、複数種類(例えば、N種類)の画像処理を、同時期に(並行して)実行する異なる画像処理における画像データの分割数の比に基づいて、DMAの起動と演算の実行とを制御する。すなわち、本第2の実施形態の複数処理実行方法では、複数種類(例えば、N種類)の画像処理に対応するチャンネルのリードDMAおよびライトDMAの起動、およびそれぞれの画像処理の演算の実行を、それぞれの画像処理における画像データの分割数に応じて制御する。言い換えれば、本第2の実施形態の複数処理実行方法では、分割数が最大である処理Aのループ(i)を実行している間に、分割数が最大ではない処理Bを実行することによって、第1の実施形態の複数処理実行方法と同様に、ホストCPU6が、画像処理プロセッサ5に複数種類(例えば、N種類)の異なる画像処理を、同時期に(並行して)施させる。これにより、本第2の実施形態の複数処理実行方法では、画像データを異なる分割数で処理する複数種類(例えば、N種類)の異なる画像処理を、同時期に(並行して)実行する場合でも、対応するデータ転送(DMA)と、それぞれの画像処理の演算とを連続的に実行することができる。このことにより、本第2の実施形態の複数処理実行方法でも、第1の実施形態の複数処理実行方法と同様に、従来のプロセッサの処理においてシステムの性能を低下させてしまう要因となっていたデータ転送や演算の待ち時間を、同時期に(並行して)実行している他の処理を実行する時間に充てることができ、システム全体の処理における待ち時間を少なくし、システム性能の低下を防止することができる。
As described above, in the
また、本第2の実施形態の複数処理実行方法でも、第1の実施形態の複数処理実行方法と同様に、従来のプロセッサの処理において、それぞれの処理を単体で実行するたびに行われているハンドシェークの処理の回数を、同時期に(並行して)実行する複数種類(例えば、N種類)の処理毎に1回に削減することができる。このことにより、本第2の実施形態の複数処理実行方法でも、第1の実施形態の複数処理実行方法と同様に、システム全体の処理におけるハンドシェークに要する処理時間を少なくし、システム性能の低下をさらに防止することができる。 Also, in the multi-process execution method of the second embodiment, as in the multi-process execution method of the first embodiment, in the conventional processor process, each time each process is executed alone. The number of handshake processes can be reduced to once for each of a plurality of types (for example, N types) of processes executed simultaneously (in parallel). As a result, in the multi-process execution method of the second embodiment, as in the multi-process execution method of the first embodiment, the processing time required for handshaking in the entire system process is reduced, and the system performance is reduced. Further, it can be prevented.
なお、本第2の実施形態の複数処理実行方法の処理手順では、入力画像データをそれぞれ異なる分割数で処理する2種類の異なる画像処理(処理Aおよび処理B)を、同時期に(並行して)実行する場合の処理手順について説明した。しかし、上述したように、本第2の実施形態の複数処理実行方法では、画像処理を実行する際の画像データの分割数に応じて、DMAの起動と演算の実行とを制御することができる。このため、本第2の実施形態の複数処理実行方法では、同時期に(並行して)実行する画像処理のいずれかが、画像データを分割せずに画像処理を実行する画像処理であっても、分割数を“1”として考えることによって、同様にDMAの起動と演算の実行とを制御することができる。 In the processing procedure of the multiple processing execution method according to the second embodiment, two different types of image processing (processing A and processing B) for processing the input image data with different division numbers are performed at the same time (in parallel). Explained the processing procedure for execution. However, as described above, in the multiple processing execution method of the second embodiment, it is possible to control the start of DMA and the execution of computations according to the number of divisions of image data when executing image processing. . For this reason, in the multiple processing execution method of the second embodiment, any one of the image processes executed at the same time (in parallel) is an image process for executing the image process without dividing the image data. However, by considering the number of divisions as “1”, it is possible to similarly control the activation of the DMA and the execution of the calculation.
なお、第1の実施形態の複数処理実行方法、および本第2の実施形態の複数処理実行方法では、画像処理プロセッサ5において2種類の異なる画像処理(処理Aおよび処理B)を、同時期に(並行して)施す場合について説明した。しかし、画像処理プロセッサ5が同時期に(並行して)実行する画像処理の数は、2種類に限定されるものではなく、画像処理を実行する際に使用する内蔵メモリの容量が、画像処理プロセッサ5に備えた内蔵メモリの容量を超えない範囲で、さらに多くの種類の画像処理を組み合わせて、同時期に(並行して)実行することができる。
In the multiple processing execution method of the first embodiment and the multiple processing execution method of the second embodiment, the
<第3の実施形態>
次に、本発明の第3の実施形態の複数処理実行方法について説明する。以下の説明においては、第1の実施形態および第2の実施形態と同様に、本第3の実施形態の複数処理実行方法を、撮像装置10に適用した場合について説明する。なお、本第3の実施形態の複数処理実行方法を適用した撮像装置10、および本第3の実施形態の複数処理実行方法の実行に係わる撮像装置10における概略構成は、図1および図2に示した第1の実施形態の複数処理実行方法を適用した撮像装置10と同様であるため、詳細な説明は省略する。従って、以下の説明においては、図1および図2に示した第1の実施形態の複数処理実行方法を適用した撮像装置10が、本第3の実施形態の複数処理実行方法を実行するものとして説明を行う。本第3の実施形態の複数処理実行方法は、撮像装置10に備えたホストCPU6が、画像処理プロセッサ5に実行させる画像処理の組み合わせを、画像処理プロセッサ5に備えた内蔵メモリの容量を考慮して動的に変更する方法である。
<Third Embodiment>
Next, a multiple processing execution method according to the third embodiment of the present invention will be described. In the following description, similarly to the first embodiment and the second embodiment, a case where the multiple processing execution method of the third embodiment is applied to the
本第3の実施形態の複数処理実行方法では、画像処理プロセッサ5に備えている全ての画像処理演算部52で実行する複数種類(例えば、N種類)の画像処理について、データの転送時間と演算時間とのそれぞれを事前に計測し、計測したそれぞれの値をホストCPU6のプログラムデータとして、例えば、プログラムメモリに格納しておく。ホストCPU6は、予め計測したデータの転送時間と演算時間とに基づいて、今回画像処理プロセッサ5に実行を指示する画像処理の組み合わせを決定する。ホストCPU6による画像処理プロセッサ5に実行を指示する画像処理の組み合わせの決定は、データの転送時間と演算時間との差の時間に基づいて行う。従って、予めプログラムデータとして格納しておく値は、データの転送時間と演算時間との差の時間であっても良い。
In the multiple processing execution method of the third embodiment, data transfer time and calculation are performed for multiple types (for example, N types) of image processing executed by all the image
また、本第3の実施形態の複数処理実行方法では、画像処理プロセッサ5において同時期に(並行して)実行する、すなわち、組み合わせて実行する最大の処理の数が、「最大結合処理数」として予め定義されている。この最大結合処理数は、撮像装置10の動作モードに応じて実行する画像処理を複数種類組み合わせた場合に、画像処理を実行する際に使用する内蔵メモリの容量が、画像処理プロセッサ5に備えた内蔵メモリの容量を超えない範囲で設定される必要がある。
In the multiple processing execution method of the third embodiment, the maximum number of processes executed in the
次に、撮像装置10における本第3の実施形態の複数処理実行方法の処理手順について説明する。図7は、本第3の実施形態における複数処理実行方法の処理手順を示したフローチャートである。図7に示したフローチャートでは、本第3の実施形態の複数処理実行方法におけるホストCPU6および画像処理プロセッサ5の動作を示している。なお、画像処理プロセッサ5は、上述したように、複数種類(例えば、N種類)の異なる画像処理を同時期に(並行して)施すことができる。以下の説明においては、入力画像データに対して4種類の異なる画像処理(処理A、処理B、処理C、および処理D)を施す場合の処理手順について説明する。
Next, a processing procedure of the multiple processing execution method of the third embodiment in the
ここで、処理Aおよび処理Bは、データの転送時間よりも演算時間の方が長い画像処理であり、処理Cおよび処理Dは、データの転送時間よりも演算時間の方が短い画像処理であるものとする。そして、処理Aと処理Bとでは、データの転送時間と演算時間との差の時間が処理Aの方が大きく、処理Cと処理Dとでは、データの転送時間と演算時間との差の時間が処理Cの方が大きいものとする。また、ホストCPU6には、最大結合処理数として“2”が予め設定されているものとする。従って、以下の説明においては、画像処理プロセッサ5が、4種類の画像処理を2種類ずつ2回に分けて実行する場合について説明する。
Here, the processing A and the processing B are image processing whose calculation time is longer than the data transfer time, and the processing C and the processing D are image processing whose calculation time is shorter than the data transfer time. Shall. In the processing A and the processing B, the time of the difference between the data transfer time and the calculation time is larger in the processing A, and in the processing C and the processing D, the time of the difference between the data transfer time and the calculation time. Suppose that process C is larger. Further, it is assumed that “2” is preset as the maximum number of combined processes in the
撮像装置10の動作が開始されると、ホストCPU6は、撮像装置10の動作モードに応じて、実行する画像処理を選択する(ステップS201)。ここでは、上述したように、4種類の異なる画像処理(処理A、処理B、処理C、および処理D)を選択する。
When the operation of the
続いて、ホストCPU6は、選択したそれぞれの画像処理におけるデータの転送時間と演算時間との時間差diff[i]を算出する(ステップS202)。ステップS202における時間差diff[i]の算出では、それぞれの画像処理(処理A、処理B、処理C、および処理D)毎に、「演算時間」から「データの転送時間」を減算した時間差diff[i]を算出する。ここで、“i”は、それぞれの画像処理に対応する時間差diffを区別するものである。以下の説明においては、処理A、処理B、処理C、および処理Dのそれぞれに対応した時間差diffをそれぞれ、時間差diff[A]、時間差diff[B]、時間差diff[C]、および時間差diff[D]とする。なお、データの転送時間と演算時間との差の時間、すなわち、時間差diff[i]をプログラムデータとして予め格納している場合には、ステップS202は不要となる。
Subsequently, the
ここでは、上述したように、処理Aおよび処理Bは、データの転送時間よりも演算時間の方が長く、処理Cおよび処理Dは、データの転送時間よりも演算時間の方が短い。従って、時間差diff[A]と時間差diff[B]とは正の値であり、時間差diff[C]と時間差diff[D]とは負の値である。また、上述したように、処理Aと処理Bとでは、処理Aの方がデータの転送時間と演算時間との差の時間が大きく、処理Cと処理Dとでは、処理Cの方がデータの転送時間と演算時間との差の時間が大きい。従って、時間差diff[A]と時間差diff[B]とでは、時間差diff[A]の方が大きく、時間差diff[C]と時間差diff[D]とでは、時間差diff[C]の方が絶対値が大きい。 Here, as described above, processing A and processing B have a calculation time longer than the data transfer time, and processing C and processing D have a calculation time shorter than the data transfer time. Therefore, the time difference diff [A] and the time difference diff [B] are positive values, and the time difference diff [C] and the time difference diff [D] are negative values. Further, as described above, in the processing A and the processing B, the processing A has a larger time difference between the data transfer time and the calculation time. In the processing C and the processing D, the processing C is more data. The difference between the transfer time and the calculation time is large. Therefore, the time difference diff [A] and the time difference diff [B] have a larger time difference diff [A], and the time difference diff [C] and the time difference diff [D] have the absolute value of the time difference diff [C]. Is big.
続いて、ホストCPU6は、最大結合処理数の回数だけ繰り返すループを、時間差diff[i]が正の値である処理の数(以下、「処理数TASK_NUM」という)の回数だけ繰り返し、画像処理プロセッサ5が同時期に(並行して)実行を指示する画像処理の組み合わせを決定する。なお、上述したように、時間差diff[i]が正の値である処理は、処理Aと処理Bとである。従って、処理数TASK_NUMは“2”である。
Subsequently, the
まず、処理数TASK_NUMの回数だけ繰り返す1回目の処理(ここでは、処理Aに対応する処理)において、最大結合処理数の回数だけ繰り返すループを実行する。最大結合処理数の回数だけ繰り返すループでは、まず、今回の対象としている処理に組み合わせる他の処理を検索する(ステップS203)。ステップS203における処理の検索では、それぞれの処理の時間差diff[i]の絶対値が、今回の対象としている処理の時間差diff[i]の内輪の値に最も近い負の値である処理を検索する。ここでは、対象としている処理が処理Aであるため、処理Aの時間差diff[A]の内輪の値に最も近い方の時間差diff[C]の絶対値または処理Dの時間差diff[D]の絶対値を検出する。そして、処理Cまたは処理Dのいずれかを、処理Aに組み合わせる処理として選択する。なお、処理Bは、時間差diff[B]が正の値であるため、検索の対象、すなわち、処理Aに組み合わせる処理ではない。 First, in a first process (here, a process corresponding to process A) that is repeated by the number of processes TASK_NUM, a loop that is repeated by the number of times of the maximum number of combined processes is executed. In the loop that repeats the number of times of the maximum number of combined processes, first, search for other processes to be combined with the current target process (step S203). In the process search in step S203, a process is searched for in which the absolute value of the time difference diff [i] of each process is a negative value closest to the value of the inner ring of the time difference diff [i] of the current process. . Here, since the target process is the process A, the absolute value of the time difference diff [C] closest to the inner ring value of the time difference diff [A] of the process A or the absolute value of the time difference diff [D] of the process D Detect value. Then, either process C or process D is selected as a process to be combined with process A. Note that the process B is not a process to be combined with the search target, that is, the process A because the time difference diff [B] is a positive value.
続いて、ホストCPU6は、組み合わせる処理があるか否かを判定する(ステップS204)。ステップS204において、組み合わせる処理がある場合には、ホストCPU6は、今回の対象としている処理の時間差diff[i]に選択した処理の時間差diff[i]を加算し、処理を組み合わせた後の新たな時間差diff[i]を算出する(ステップS205)。ここで算出される新たな時間差diff[i]の値は、今回の対象としている処理の時間差diff[i]の値から選択した処理の時間差diff[i]の値を減算した正の値となる。
Subsequently, the
以降、ホストCPU6は、今回の対象としている処理の時間差diff[i]を、算出した新たな時間差diff[i]に置き換えて、ステップS203〜ステップS205までのループの処理を、最大結合処理数の回数だけ繰り返す。その後、ホストCPU6は、ステップS203〜ステップS205までのループの処理の繰り返しを、最大結合処理数と同じ回数だけ行うと、処理のループを抜け出す。また、ステップS204において、組み合わせる処理がない場合、すなわち、最大結合処理数と同じ回数だけ繰り返す前であっても、対象としている処理の時間差diff[i]の内輪の値に最も近い負の値である処理がない場合には、ステップS203〜ステップS205までの処理のループを抜け出す。
Thereafter, the
続いて、ホストCPU6は、同様に、処理数TASK_NUMの回数だけ繰り返す2回目の処理(ここでは、処理Bに対応する処理)において、最大結合処理数の回数だけ繰り返すループの処理を実行する。
Subsequently, the
以降、同様に、ホストCPU6は、最大結合処理数の回数だけ繰り返すループの処理を処理数TASK_NUMの回数だけ繰り返す。その後、ホストCPU6は、最大結合処理数の回数だけ繰り返すループの処理の繰り返しを、処理数TASK_NUMと同じ回数だけ行うと、すなわち、時間差diff[i]が正の値である全ての処理に対して、画像処理プロセッサ5で同時期に(並行して)実行する他の画像処理の組み合わせを決定すると、処理のループを抜け出す。
Thereafter, similarly, the
なお、ここでは、処理数TASK_NUM=2であるため、ホストCPU6は、処理数TASK_NUMの回数だけ繰り返すループの処理を2回繰り返す。また、最大結合処理数=2であるため、ホストCPU6は、最大で2種類の画像処理を結合する。以下の説明においては、処理Aに処理Cが組み合わされ、処理Bに処理Dが組み合わされたものとして説明を行う。
Here, since the number of processes TASK_NUM = 2, the
続いて、ホストCPU6は、画像処理プロセッサ5が実行した画像処理の組み合わせの数を表すカウント値task_cntをリセット(初期化)、すなわち、“0”にする。そして、ホストCPU6は、複数処理実行の処理を開始する。
Subsequently, the
複数処理実行の処理において、ホストCPU6は、まず、割り込み処理を実行する(ステップS207)。ステップS207の割り込み処理では、ホストCPU6が、撮像装置10内の各構成要素からの割り込み信号を受け付ける。その後、キャプチャ部3は、イメージャ2から出力された画像信号を1フレーム分キャプチャした入力画像データをDRAM4に格納すると、ホストCPU6にキャプチャ完了信号を出力する。
In the multi-process execution process, the
ホストCPU6が、撮像装置10内の各構成要素からの割り込み信号を受け付けると、受け付けた割り込みの要因を判定する(ステップS208)。ステップS208において、割り込みの要因がキャプチャ部3からのキャプチャ完了信号である場合には、ホストCPU6は、画像処理プロセッサ5を起動する(ステップS211)。ホストCPU6が画像処理プロセッサ5を起動する際、ホストCPU6は、画像処理プロセッサ5に実行指示を出力するとともに、最初に実行する画像処理の組み合わせ(ここでは、まず、処理Aと処理Cとの2種類の組み合わせ)を表す情報を画像処理プロセッサ5に出力する。この実行する画像処理の組み合わせを表す情報には、画像処理プロセッサ5に備えた複数種類(例えば、N種類)の画像処理演算部52のそれぞれを、異なるそれぞれのビットで表したフラグが用いられる。この場合、ホストCPU6は、今回実行する画像処理に対応するビットをONにしたフラグを、画像処理プロセッサ5に出力する。
When the
画像処理プロセッサ5は、ホストCPU6によって起動が指示される、すなわち、ホストCPU6から実行指示と実行する画像処理の情報を表すフラグが入力されると、指示された組み合わせの画像処理の実行を開始する。まず、画像処理プロセッサ5は、入力されたフラグにおいてONになっているビットに対応した画像処理演算部52が、画像処理する際に必要とする内蔵メモリの容量を動的に確保する(ステップS214)。
When the activation is instructed by the
なお、画像処理プロセッサ5は、キャプチャ部3が1フレーム分キャプチャした入力画像データを、それぞれの処理に応じた複数個(例えば、M個)に分割し、分割した入力画像データのそれぞれに対する画像処理を、それぞれの処理に応じて分割した数分だけ繰り返すことによって、1フレーム分の画像処理を完了する。従って、それぞれの画像処理演算部52に対応して動的に確保する内蔵メモリの容量は、分割した入力画像データに対して画像処理を施すために必要な小容量である。以下の説明においては、処理A、処理B、処理C、および処理Dのそれぞれの画像処理における入力画像データの分割数を、それぞれ分割数Ma、分割数Mb、分割数Mc、および分割数Mdとする。
The
続いて、画像処理プロセッサ5は、今回実行する2種類の画像処理(処理Aおよび処理C)のそれぞれに必要な、分割した最初(1個目)の入力画像データ(1/Maの入力画像データ、および1/Mcの入力画像データ)をDRAM4から読み出すため、フラグがONになっているビットに対応したリードDMA(1回目のリードDMA)を起動する(ステップS215)。次に、画像処理プロセッサ5は、分割した処理の1回目のループにおいて、フラグがONになっているビットに対応した1回目のリードDMAの終了を待つ(ステップS216)。1回目のリードDMAが終了すると、画像処理プロセッサ5は、次(2個目)の入力画像データ(1/Maの入力画像データ、および1/Mcの入力画像データ)を事前にDRAM4から読み出すため、フラグがONになっているビットに対応したリードDMA(2回目のリードDMA)を起動する(ステップS217)。
Subsequently, the
画像処理プロセッサ5は、2回目のリードDMAによって2個目の入力画像データをDRAM4から読み出している間に、1個目の入力画像データに対して、フラグがONになっているビットに対応した2種類の画像処理(処理Aおよび処理Cの演算)を、同時期に(並行して)実行する(ステップS218およびステップS219)。なお、図7に示したフローチャートでは、第1の処理の演算(ステップS218)と第2の処理の演算(ステップS219)とを、順次実行する場合の一例を示している。ここでは、処理Aが第1の処理に対応し、処理Cが第2の処理に対応する。
The
その後、フラグがONになっているビットに対応した2種類の画像処理が完了すると、画像処理プロセッサ5は、今回の処理のループが1回目のループであるか否かを判定する(ステップS220)。ステップS220において、今回の処理のループが1回目のループである場合には、画像処理プロセッサ5は、1個目の入力画像データ(1/Maの入力画像データ、および1/Mcの入力画像データ)に対して画像処理を施した後のそれぞれの1個目の画像処理結果をDRAM4に書き戻すため、フラグがONになっているビットに対応したライトDMA(1回目のライトDMA)を起動する(ステップS222)。
Thereafter, when the two types of image processing corresponding to the bit whose flag is ON are completed, the
なお、図7に示したフローチャートでは、第1の処理(処理A)の演算(ステップS218)と第2の処理(処理C)の演算(ステップS219)とを順次実行し、2種類の画像処理が完了した後に、フラグがONになっているビットに対応したライトDMAを起動する(ステップS222)場合について説明した。しかし、画像処理を実行し、画像処理を施した後の画像処理結果をDRAM4に書き戻す手順は、図7に示したステップS218〜ステップS222までの処理手順のみに限定されるものではない。例えば、図3に示した第1の実施形態の複数処理実行方法の処理手順におけるステップS8〜ステップS12までの処理と同様に、それぞれの画像処理が完了する毎に、画像処理を施した後の画像処理結果をDRAM4に書き戻す手順にすることもできる。
In the flowchart shown in FIG. 7, the calculation of the first process (process A) (step S218) and the calculation of the second process (process C) (step S219) are sequentially executed, and two types of image processing are performed. A case has been described in which the write DMA corresponding to the bit whose flag is ON is started after step S <b> 222 is completed (step S <b> 222). However, the procedure of executing the image processing and writing back the image processing result after the image processing to the
そして、画像処理プロセッサ5は、分割した処理の2回目のループにおいて、フラグがONになっているビットに対応した2回目のリードDMAの終了を待つ(ステップS216)。2回目のリードDMAが終了すると、画像処理プロセッサ5は、次(3個目)の入力画像データ(1/Maの入力画像データ、および1/Mcの入力画像データ)を事前にDRAM4から読み出すため、フラグがONになっているビットに対応したリードDMA(3回目のリードDMA)を起動する(ステップS217)。
Then, the
画像処理プロセッサ5は、3回目のリードDMAによって3個目の入力画像データをDRAM4から読み出している間に、2個目の入力画像データに対して、フラグがONになっているビットに対応した2種類の画像処理(処理Aおよび処理Cの演算)を、同時期に(並行して)実行する(ステップS218およびステップS219)。
While the third input image data is being read from the
その後、フラグがONになっているビットに対応した2種類の画像処理が完了すると、画像処理プロセッサ5は、今回の処理のループが1回目のループであるか否かを判定する(ステップS220)。ステップS220において、今回の処理のループが1回目のループでない場合には、画像処理プロセッサ5は、フラグがONになっているビットに対応した1回目のライトDMAの終了を待つ(ステップS221)。フラグがONになっているビットに対応した1回目のライトDMAが終了すると、画像処理プロセッサ5は、2個目の入力画像データ(1/Maの入力画像データ、および1/Mcの入力画像データ)に対して画像処理を施した後のそれぞれの2個目の画像処理結果をDRAM4に書き戻すため、フラグがONになっているビットに対応したライトDMA(2回目のライトDMA)を起動する(ステップS222)。
Thereafter, when the two types of image processing corresponding to the bit whose flag is ON are completed, the
以降、同様に、画像処理プロセッサ5は、ステップS216〜ステップS222までの処理を、入力画像データを分割した数分(例えば、M回)だけ繰り返す。その後、画像処理プロセッサ5は、ステップS216〜ステップS222までの処理の繰り返しを、入力画像データを分割した数と同じ回数行うと、すなわち、キャプチャ部3がキャプチャした1フレーム分の入力画像データに対して実行した、フラグがONになっているビットに対応した2種類の画像処理が完了すると、処理のループを抜け出す。そして画像処理プロセッサ5は、フラグがONになっているビットに対応した最後のライトDMAの終了を待つ(ステップS223)。フラグがONになっているビットに対応した最後のライトDMAが終了する、すなわち、キャプチャ部3がキャプチャした1フレーム分の入力画像データに対して実行した、フラグがONになっているビットに対応した2種類の画像処理結果(処理Aおよび処理Cの画像処理結果)をDRAM4に書き戻すと、画像処理プロセッサ5は、終了割り込み信号をホストCPU6に出力する(ステップS224)。
Thereafter, similarly, the
ホストCPU6は、割り込み処理において、画像処理プロセッサ5からの終了割り込み信号を受け付ける(ステップS207)。ホストCPU6が、画像処理プロセッサ5からの終了割り込み信号を受け付けると、受け付けた割り込みの要因を判定する(ステップS208)。ここでは、ステップS208において、割り込みの要因が画像処理プロセッサ5からの終了割り込み信号であると判定される。
In the interrupt process, the
続いて、ホストCPU6は、カウント値task_cntに“1”を加算する、すなわち、カウント値task_cntの値を1つ進める(ステップS209)。そして、ホストCPU6は、入力画像データに対して施す全ての画像処理(処理A、処理B、処理C、および処理D)が完了したか否かを判定する(ステップS210)。ステップS210の判定では、カウント値task_cntの値が、処理数TASK_NUMの値に到達しているか否かによって、全ての画像処理が完了したか否かを判定する。そして、カウント値task_cntの値が処理数TASK_NUMの値に到達している場合に、全ての画像処理が完了したと判定し、カウント値task_cntの値が処理数TASK_NUMの値に到達していない場合に、全ての画像処理が完了していないと判定する。これは、本第3の実施形態の複数処理実行方法では、時間差diff[i]が正の値である処理に時間差diff[i]が負の値である処理を組み合わせている。従って、時間差diff[i]が正の値である処理の数である処理数TASK_NUMの値だけ画像処理の組み合わせができる。このことから、画像処理プロセッサ5が、処理数TASK_NUMの回数だけ組み合わせた画像処理を実行すると、全ての画像処理が完了したことになるためである。
Subsequently, the
ここでは、ステップS210において、全ての画像処理が完了していないと判定されるため、ホストCPU6は、再度、画像処理プロセッサ5を起動する(ステップS211)。ホストCPU6が画像処理プロセッサ5を起動する際、ホストCPU6は、画像処理プロセッサ5に実行指示を出力するとともに、次に実行する画像処理の組み合わせ(ここでは、まず、処理Bと処理Dとの2種類の組み合わせ)を表す情報を画像処理プロセッサ5に出力する。
Here, since it is determined in step S210 that all image processing has not been completed, the
画像処理プロセッサ5は、ホストCPU6によって起動が指示されると、指示された組み合わせの画像処理の実行を開始し、入力されたフラグにおいてONになっているビットに対応した処理Bと処理Dとの2種類の画像処理演算部52が、画像処理する際に必要とする内蔵メモリの容量を動的に確保する(ステップS214)。
When the activation is instructed by the
続いて、画像処理プロセッサ5は、今回実行する2種類の画像処理(処理Bおよび処理D)のそれぞれに必要な、分割した最初(1個目)の入力画像データ(1/Mbの入力画像データ、および1/Mdの入力画像データ)をDRAM4から読み出すため、フラグがONになっているビットに対応したリードDMA(1回目のリードDMA)を起動する(ステップS215)。
Subsequently, the
以降、上述した処理Aと処理Cとの2種類の画像処理と同様の手順で、処理Bと処理Dとの2種類の画像処理を実行する。なお、処理Bと処理Dとの2種類の画像処理は、処理Bが第1の処理(ステップS218)に対応し、処理Dが第2の処理(ステップS219)に対応する以外は、上述した処理Aと処理Cとの2種類の画像処理と同様の手順で実行されるため、詳細な説明は省略する。 Thereafter, the two types of image processing of the processing B and the processing D are executed in the same procedure as the two types of image processing of the processing A and the processing C described above. Note that the two types of image processing, processing B and processing D, have been described above except that processing B corresponds to the first processing (step S218) and processing D corresponds to the second processing (step S219). Since it is executed in the same procedure as the two types of image processing of processing A and processing C, detailed description is omitted.
その後、フラグがONになっているビットに対応した2種類の画像処理(処理Bおよび処理D)が完了する、すなわち、キャプチャ部3がキャプチャした1フレーム分の入力画像データに対して実行した、フラグがONになっているビットに対応した2種類の画像処理結果(処理Bおよび処理Dの画像処理結果)をDRAM4に書き戻すと、画像処理プロセッサ5は、終了割り込み信号をホストCPU6に出力する(ステップS224)。
Thereafter, two types of image processing (processing B and processing D) corresponding to the bit whose flag is ON are completed, that is, executed for one frame of input image data captured by the capture unit 3, When the two types of image processing results (image processing results of processing B and processing D) corresponding to the bit whose flag is ON are written back to the
ホストCPU6は、割り込み処理において、画像処理プロセッサ5からの終了割り込み信号を受け付ける(ステップS207)。ホストCPU6が、画像処理プロセッサ5からの終了割り込み信号を受け付けると、受け付けた割り込みの要因を判定する(ステップS208)。ここでは、ステップS208において、割り込みの要因が画像処理プロセッサ5からの終了割り込み信号であると判定される。
In the interrupt process, the
続いて、ホストCPU6は、カウント値task_cntに“1”を加算して、カウント値task_cntの値を1つ進める(ステップS209)。そして、ホストCPU6は、入力画像データに対して施す全ての画像処理(処理A、処理B、処理C、および処理D)が完了したか否かを判定する(ステップS210)。ここでは、ステップS210において、全ての画像処理が完了したと判定されるため、ホストCPU6は、画像処理部7を起動し、画像処理プロセッサ5がDRAM4に書き戻した画像処理結果に対して各種の画像処理を施させる(ステップS212)。そして、ホストCPU6は、カウント値task_cntをリセット(初期化)、すなわち、“0”にする。
Subsequently, the
上記に述べたように、本第3の実施形態の複数処理実行方法を適用した撮像装置10では、ホストCPU6が、画像処理プロセッサ5に実行させる画像処理の組み合わせを、画像処理プロセッサ5に備えた内蔵メモリの容量を考慮して動的に決定する。これにより、第1の実施形態の複数処理実行方法と同様に、ホストCPU6が、画像処理プロセッサ5に複数種類(例えば、N種類)の異なる画像処理を、同時期に(並行して)施させる。これにより、本第3の実施形態の複数処理実行方法でも、第1の実施形態の複数処理実行方法と同様に、従来のプロセッサの処理においてシステムの性能を低下させてしまう要因となっていたデータ転送や演算の待ち時間を、同時期に(並行して)実行している他の処理を実行する時間に充てることができ、システム全体の処理における待ち時間を少なくし、システム性能の低下を防止することができる。
As described above, in the
また、本第3の実施形態の複数処理実行方法を適用した撮像装置10では、ホストCPU6が、画像処理プロセッサ5に実行させる画像処理の組み合わせを決定する際に、必要以上に多くの種類の画像処理を組み合わせないようにすることができる。そして、画像処理プロセッサ5が、ホストCPU6から指示された画像処理を実行する際に必要な入力画像データを一時記憶するための内蔵メモリの容量を動的に確保する。これにより、本第3の実施形態の複数処理実行方法では、画像処理プロセッサ5に備えた内蔵メモリの容量を圧迫することがなくなる。
In the
なお、本第3の実施形態の複数処理実行方法を適用した撮像装置10では、ホストCPU6が、画像処理プロセッサ5に実行させる画像処理を、必要以上に多くしないように画像処理の組み合わせを決定するため、ハンドシェークの処理の回数が、第1の実施形態の複数処理実行方法や第2の実施形態の複数処理実行方法よりも多くなることも考えられる。しかし、本第3の実施形態の複数処理実行方法でも、複数種類(例えば、N種類)の異なる画像処理を一纏めにして、同時期に(並行して)施させるため、従来のプロセッサの処理において、それぞれの処理を単体で実行するたびに行われているハンドシェークの処理の回数よりは、ハンドシェークの処理の回数を削減することができる。このことにより、本第3の実施形態の複数処理実行方法でも、システム全体の処理におけるハンドシェークに要する処理時間を少なくし、システム性能の低下をさらに防止することができる。
In the
なお、本第3の実施形態の複数処理実行方法では、画像処理プロセッサ5の処理手順が、第1の実施形態の複数処理実行方法とほぼ同様の手順である場合について説明したが、画像処理プロセッサ5の処理手順を、第2の実施形態の複数処理実行方法とほぼ同様の手順にすることもできる。
In the multiple processing execution method of the third embodiment, the case has been described where the processing procedure of the
上記に述べたとおり、本発明を実施するための形態によれば、画像処理プロセッサにおいて、データ転送を行う入出力部(DMA部51)と、画像処理の演算を行う演算部(画像処理演算部52)との動作を分け、それぞれの入出力部の制御と、それぞれの演算部の制御とを一纏めにして制御する。これにより、本発明を実施するための形態では、画像処理プロセッサにおけるデータ転送と画像処理の演算とを、同時期に(並行して)実行することができる。このことにより、本発明を実施するための形態では、従来のプロセッサの処理においてシステムの性能を低下させてしまう要因となっていたデータ転送や演算の待ち時間を、同時期に(並行して)実行している他の画像処理を実行する時間に充てることができる。また、本発明を実施するための形態では、複数種類の異なる画像処理を組み合わせて(一纏めにして)、同時期に(並行して)実行することができる。このことにより、本発明を実施するための形態では、従来のプロセッサの処理において、それぞれの処理を単体で実行するたびに行われているハンドシェークの処理の回数を、同時期に(並行して)実行する画像処理の組み合わせの回数に削減することができる。これらのことにより、本発明を実施するための形態では、複数の処理を実行するシステムにおいて、ハンドシェークが頻発することや、それぞれの処理内での待ち時間が発生することによるシステム性能の低下を低減することができる。 As described above, according to the embodiment for carrying out the present invention, in the image processor, the input / output unit (DMA unit 51) that performs data transfer and the calculation unit (image processing calculation unit) that performs calculation of image processing. 52), the control of each input / output unit and the control of each calculation unit are collectively controlled. Thereby, in the form for implementing this invention, the data transfer in an image processor and the calculation of image processing can be performed at the same time (in parallel). As a result, in the mode for carrying out the present invention, the waiting time for data transfer and calculation, which has been a factor of degrading the system performance in the processing of the conventional processor, is set at the same time (in parallel). It can be devoted to the time to execute other image processing being executed. In the embodiment for carrying out the present invention, a plurality of different types of image processing can be combined (collectively) and executed at the same time (in parallel). As a result, in the mode for carrying out the present invention, the number of handshaking processes performed each time each process is executed alone in the conventional processor process is set at the same time (in parallel). The number of image processing combinations to be executed can be reduced. As a result, in the embodiment for carrying out the present invention, in a system that executes a plurality of processes, reduction of system performance due to frequent handshaking and waiting time in each process is reduced. can do.
なお、本実施形態においては、画像処理プロセッサ5が、2種類の異なる画像処理を同時期に(並行して)実行する場合について説明した。しかし、画像処理プロセッサ5が同時期に(並行して)実行する画像処理の数は、2種類に限定されるものではなく、さらに多くの種類の画像処理を同時期に(並行して)実行する場合であっても、同様に本発明の複数処理実行方法を適用することができる。
In the present embodiment, the case where the
なお、本実施形態においては、本発明の複数処理実行方法を、撮像装置10に適用した場合について説明した。しかし、本発明の複数処理実行方法を適用することができるシステムは、本発明を実施するための形態に限定されるものではなく、ホストCPUと、ホストCPUに制御される割り込み制御機構を持たないプロセッサとを備え、プロセッサで複数の処理を行うシステムであれば、どのようなシステムも適用することができる。
In the present embodiment, the case where the multiple processing execution method of the present invention is applied to the
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。 The embodiment of the present invention has been described above with reference to the drawings. However, the specific configuration is not limited to this embodiment, and includes various modifications within the scope of the present invention. It is.
10・・・撮像装置(データ処理システム)
1・・・レンズ
2・・・イメージャ
3・・・キャプチャ部
4・・・DRAM(外部メモリ)
5・・・画像処理プロセッサ(プロセッサ)
51・・・DMA部
52・・・画像処理演算部(処理部)
6・・・ホストCPU
7・・・画像処理部
8・・・記録部
9・・・メモリカード
10 ... Imaging device (data processing system)
DESCRIPTION OF SYMBOLS 1 ...
5. Image processing processor (processor)
51...
6 ... Host CPU
7: Image processing unit 8: Recording unit 9: Memory card
Claims (4)
前記データに対して処理を施す複数の処理部と、複数の前記処理部のそれぞれに対応した複数のチャンネルを有し、それぞれのチャンネル毎に前記外部メモリにアクセスするDMA部と、を具備したプロセッサと、
前記プロセッサに具備されたそれぞれの前記処理部による処理の実行を指示するホストCPUと、
を備えたデータ処理システムにおける複数処理実行方法であって、
前記ホストCPUによって実行が指示された前記処理部に対応する前記DMA部のデータ読み出し用チャンネルによって、前記外部メモリからの前記データの読み出しが全て完了した後に、該データ読み出し用チャンネルに、前記外部メモリからの次の前記データの読み出しを開始させるリードDMAステップと、
前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しと並行して、前記ホストCPUによって実行が指示された前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させる複数処理実行ステップと、
前記ホストCPUによって実行が指示された前記処理部に対応する前記DMA部のデータ書き込み用チャンネルに、該処理部が処理を完了した結果データの前記外部メモリへの書き込みを開始させるライトDMAステップと、
を含む、
ことを特徴とする複数処理実行方法。 External memory for storing data,
A processor comprising: a plurality of processing units that process the data; and a DMA unit that has a plurality of channels corresponding to each of the plurality of processing units and accesses the external memory for each channel. When,
A host CPU that instructs execution of processing by each of the processing units included in the processor;
A method for executing multiple processes in a data processing system comprising:
After all the data read from the external memory is completed by the data read channel of the DMA unit corresponding to the processing unit instructed to be executed by the host CPU, the external memory is connected to the data read channel. A read DMA step for starting reading of the next data from
In parallel with the reading of the next data from the external memory by the data reading channel, the processing unit instructed to execute by the host CPU performs processing on the data that has been read from the external memory. Multiple process execution steps to be executed;
A write DMA step for starting writing the result data that the processing unit has completed processing to the external memory into the data write channel of the DMA unit corresponding to the processing unit that is instructed to be executed by the host CPU;
including,
A method for executing multiple processes.
前記処理部が前記データに対する処理を実行するか否かの周期を表す、それぞれの前記処理部に対応した実行周期に基づいて、それぞれの前記処理部に対応する前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させるか否かを判定するリードDMA実行判定ステップ、
を含み、
次の前記データの読み出しを開始させると判定した前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させ、
前記データの読み出しを開始させた前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しが全て完了した後に、次のリードDMA実行判定ステップを実行し、
前記複数処理実行ステップは、
前記リードDMA実行判定ステップによって次の前記データの読み出しを開始させるか否かを判定する前に前記データの読み出しを開始させた前記データ読み出し用チャンネルに対応する前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させ、
前記ライトDMAステップは、
前記データに対する処理を実行した前記処理部に対応する前記データ書き込み用チャンネルに、該処理部が処理を完了した前記結果データの前記外部メモリへの書き込みを開始させる、
ことを特徴とする請求項1に記載の複数処理実行方法。 The read DMA step includes:
Based on the execution cycle corresponding to each of the processing units, which represents the cycle of whether or not the processing unit executes the processing on the data, the data reading channel corresponding to each of the processing units is set to the following A read DMA execution determination step for determining whether to start reading the data;
Including
In the data read channel determined to start reading the next data, start reading the next data,
After all the next reading of the data from the external memory by the data reading channel that has started reading the data is completed, a next read DMA execution determination step is executed,
The multiple processing execution step includes:
Before the read DMA execution determination step determines whether or not to start reading the next data, the processing unit corresponding to the data read channel that has started the data read from the external memory Causing the data that has been read to be processed,
The write DMA step includes:
Causing the data writing channel corresponding to the processing unit that has performed processing on the data to start writing the result data that the processing unit has completed to the external memory;
The multiple processing execution method according to claim 1, wherein:
前記データ読み出し用チャンネルによって前記データの読み出しを実行するか否かを表す、それぞれの前記データ読み出し用チャンネルに対応したDMA実行状態と、
前記処理部によって前記データに対する処理を実行するか否かを表す、それぞれの前記処理部に対応した処理実行状態と、
を設定し、
次の前記データの読み出しを開始させるか否かを判定する前に、
現在の前記DMA実行状態を、前記処理実行状態にコピーすることによって、前記データの読み出しを実行する前記データ読み出し用チャンネルに対応した前記処理部による前記データに対する処理を実行する状態とし、
次の前記データの読み出しを開始させるか否かの判定において、
前記実行周期が、前記処理部が前記データに対する処理を実行するタイミングであるときに、次の前記データの読み出しを開始させると判定し、次の前記データの読み出しを開始させると判定した前記データ読み出し用チャンネルに対応する前記DMA実行状態を、前記データの読み出しを実行する状態に更新し、
前記実行周期が、前記処理部が前記データに対する処理を実行しないタイミングであるときに、次の前記データの読み出しを開始させないと判定し、次の前記データの読み出しを開始させないと判定した前記データ読み出し用チャンネルに対応する前記DMA実行状態を、前記データの読み出しを実行しない状態に更新し、
次の前記データの読み出しを開始させるか否かの判定をした後に、
前記DMA実行状態が、前記データの読み出しを実行する状態である前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させ、
前記DMA実行状態が、前記データの読み出しを実行する状態である前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しが全て完了した後に、次の該リードDMA実行判定ステップを実行し、
前記複数処理実行ステップは、
前記処理実行状態が、前記データに対する処理を実行する状態である前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させ、
前記ライトDMAステップは、
前記処理実行状態が、前記データに対する処理を実行する状態である前記処理部に対応する前記データ書き込み用チャンネルに、該処理部が処理を完了した前記結果データの前記外部メモリへの書き込みを開始させる、
ことを特徴とする請求項2に記載の複数処理実行方法。 The read DMA execution determination step includes:
A DMA execution state corresponding to each of the data read channels, which indicates whether or not to perform the data read by the data read channel;
A process execution state corresponding to each of the processing units, which indicates whether or not to execute the process on the data by the processing unit;
Set
Before determining whether to start reading the next data,
By copying the current DMA execution state to the processing execution state, the processing unit corresponding to the data read channel for executing the data reading is in a state of executing processing on the data,
In determining whether to start reading the next data,
When the execution cycle is the timing at which the processing unit executes processing on the data, the data read is determined to start reading the next data and is determined to start reading the next data Updating the DMA execution state corresponding to the communication channel to a state in which the data is read out;
When the execution cycle is a timing at which the processing unit does not execute the process on the data, the data read is determined not to start reading the next data and not to start reading the next data Updating the DMA execution state corresponding to the communication channel to a state in which the reading of the data is not executed,
After determining whether to start reading the next data,
The DMA execution state starts reading the next data to the data read channel in which the data read is executed,
The DMA execution state is a state in which reading of the data is executed. After the next reading of the data from the external memory by the data reading channel is completed, the next read DMA execution determination step is executed. ,
The multiple processing execution step includes:
The processing execution state is a state of executing processing on the data, causing the processing unit to execute processing on the data that has been read from the external memory,
The write DMA step includes:
The processing execution state causes the data writing channel corresponding to the processing unit in a state of executing processing on the data to start writing the result data that has been processed by the processing unit to the external memory. ,
The multiple processing execution method according to claim 2, wherein:
予め計測した前記処理部が前記データに対する処理を実行する際に要する処理時間と、該処理部に対応した前記データ読み出し用チャンネルによって前記外部メモリからの前記データを読み出す際に要するデータ転送時間との差に基づいて、前記ホストCPUが前記プロセッサに実行を指示する前記処理部の組み合わせを決定する実行処理決定ステップと、
前記ホストCPUによって実行が指示された前記処理部の組み合わせに応じて、組み合わされた該処理部のそれぞれが処理を実行する際に要する、該処理部に対応する前記データ読み出し用チャンネルによって読み出した前記データを一時的に記憶する内蔵メモリの容量を動的に確保するバッファ確保ステップと、
を含み、
前記複数処理実行ステップは、
前記実行処理決定ステップによって組み合わされ、前記ホストCPUによって実行が指示されたそれぞれの前記処理部に、対応する前記データ読み出し用チャンネルによって前記外部メモリからの読み出しが完了したそれぞれの前記データに対する処理を実行させ、
前記ライトDMAステップは、
前記実行処理決定ステップによって組み合わされ、前記ホストCPUによって実行が指示されたそれぞれの前記処理部に対応する前記データ書き込み用チャンネルに、それぞれの該処理部が処理を完了したそれぞれの前記結果データの前記外部メモリへの書き込みを開始させる、
ことを特徴とする請求項1に記載の複数処理実行方法。 The multiple processing execution method further includes:
A processing time required for the processing unit measured in advance to execute processing on the data, and a data transfer time required to read the data from the external memory by the data reading channel corresponding to the processing unit. An execution process determining step for determining a combination of the processing units that the host CPU instructs the processor to execute based on the difference;
According to the combination of the processing units instructed to be executed by the host CPU, each of the combined processing units read by the data reading channel corresponding to the processing unit required when executing the processing. A buffer securing step for dynamically securing a capacity of an internal memory for temporarily storing data;
Including
The multiple processing execution step includes:
The processing for each piece of data that has been read from the external memory by the corresponding data reading channel is executed on each processing unit that is combined by the execution processing determining step and instructed to be executed by the host CPU. Let
The write DMA step includes:
Combined by the execution process determination step, the data write channel corresponding to each of the processing units instructed to be executed by the host CPU has the processing data of each of the result data that has been processed by each of the processing units. Start writing to external memory,
The multiple processing execution method according to claim 1, wherein:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012039573A JP2013175074A (en) | 2012-02-27 | 2012-02-27 | Execution method for a plurality of processes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012039573A JP2013175074A (en) | 2012-02-27 | 2012-02-27 | Execution method for a plurality of processes |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013175074A true JP2013175074A (en) | 2013-09-05 |
Family
ID=49267916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012039573A Pending JP2013175074A (en) | 2012-02-27 | 2012-02-27 | Execution method for a plurality of processes |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013175074A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107949838A (en) * | 2015-09-10 | 2018-04-20 | 富士胶片株式会社 | Information processing system, information processing method, message handling program and storage medium |
-
2012
- 2012-02-27 JP JP2012039573A patent/JP2013175074A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107949838A (en) * | 2015-09-10 | 2018-04-20 | 富士胶片株式会社 | Information processing system, information processing method, message handling program and storage medium |
CN107949838B (en) * | 2015-09-10 | 2021-02-19 | 富士胶片株式会社 | Information processing system, information processing method, and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7602394B2 (en) | Image processing device, method, and storage medium which stores a program | |
US7602392B2 (en) | Image processing device, method, and storage medium which stores a program | |
KR102637732B1 (en) | Image signal processor, method of operating the image signal processor, and application processor including the image signal processor | |
JP2011059819A (en) | Information processing method and apparatus | |
US20060274965A1 (en) | Image processing device, method, and storage medium which stores a program | |
US20130036426A1 (en) | Information processing device and task switching method | |
CN111738917A (en) | Picture scaling method, device, equipment and storage medium | |
US10877811B1 (en) | Scheduler for vector processing operator allocation | |
JP2013175074A (en) | Execution method for a plurality of processes | |
JP2008072585A (en) | Method of supplying data for arithmetic processing and image processing apparatus | |
US10089561B2 (en) | Generating a raster image region by rendering in parallel plural regions of smaller height and segmenting the generated raster image region into plural regions of smaller width | |
WO2020107616A1 (en) | Parallel computing method and apparatus | |
JP2008172410A (en) | Imaging apparatus, image processing apparatus, image processing method, program for image processing method, and recording medium recorded with program for image processing method | |
WO2022133954A1 (en) | Image rendering method, apparatus and system, and computer-readable storage medium | |
US20160127613A1 (en) | Memory control circuit and image forming apparatus | |
US10503552B1 (en) | Scheduler for vector processing operator readiness | |
US20190026247A1 (en) | Information processing apparatus and information processing method | |
JP6622546B2 (en) | Image processing apparatus and method | |
US20230385102A1 (en) | Hardware event triggered pipeline control | |
JP2014170476A (en) | Data processor and method for controlling the same | |
JP2009053829A (en) | Information processor and information processing program | |
US9019404B2 (en) | Image processing apparatus and method for preventing image degradation | |
JP4905080B2 (en) | Transfer circuit, transfer control method, imaging apparatus, control program | |
KR20110068747A (en) | An apparatus and a method for processing image, and a computer-readable medium storing a computer program for performing the method | |
JP2024015829A (en) | Image processing apparatus and image processing circuit |