JP7122942B2 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP7122942B2
JP7122942B2 JP2018205514A JP2018205514A JP7122942B2 JP 7122942 B2 JP7122942 B2 JP 7122942B2 JP 2018205514 A JP2018205514 A JP 2018205514A JP 2018205514 A JP2018205514 A JP 2018205514A JP 7122942 B2 JP7122942 B2 JP 7122942B2
Authority
JP
Japan
Prior art keywords
task
memory
data
real
semiconductor device
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.)
Active
Application number
JP2018205514A
Other languages
English (en)
Other versions
JP2020071688A (ja
Inventor
泰郎 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2018205514A priority Critical patent/JP7122942B2/ja
Priority to US16/576,468 priority patent/US11263046B2/en
Publication of JP2020071688A publication Critical patent/JP2020071688A/ja
Application granted granted Critical
Publication of JP7122942B2 publication Critical patent/JP7122942B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Description

本発明は、半導体装置に関し、特に複数のマスタを備え、複数のタスクをリアルタイムで実行可能な半導体装置に関する。
半導体装置として、マイクロプロセッサ(以下、単にプロセッサとも称する)、ダイレクトメモリアクセスコントローラ(以下、DMAコントローラとも称する)およびメモリ回路を搭載した半導体装置が知られている。このような半導体装置は、例えばFA(Factory Automation)向けのネットワークシステムにおいて用いられる。プロセッサは、プログラムに従って所定の処理を実行するとき、アドレス信号(以下、本明細書では、アドレス情報または/および転送制御情報を伝達する信号をまとめてアドレス信号と称する)を出力して、メモリ回路または周辺回路に対してアクセスを行う。DMAコントローラも、プロセッサと同様に、アドレス信号を出力して、メモリ回路または周辺回路に対してアクセスを行う。この場合、プロセッサおよびDMAコントローラは、メモリ回路および周辺回路に対して、アクセスを行うマスタと見なすことができ、アクセスされるメモリ回路または周辺回路は、スレーブと見なすことができる。
例えばネットワークシステムでは、消費電力を抑制しながら、システム全体のパフォーマンス(以下、本明細書では、リアルタイム性能(より厳しいタイミング制約に対応できる能力)とスループット性能(データ転送レート、演算能力)の両方をまとめてパフォーマンスと称する)を向上させることが望まれている。このための有効な手段として、1個の半導体装置に搭載されるプロセッサまたは/およびDMAコントローラの個数を増やし、処理をリアルタイムで並列動作させることが考えられる。
リアルタイムに関する技術は、たとえば特許文献1~3に記載されている。
特開2002-49497号公報 特開2004-220093号公報 国際公開2008/023426号
複数の処理をリアルタイムで行うために、リアルタイムオペレーティングシステム(以下、RTOSとも称する)をプロセッサで実行させ、RTOS上で、処理に対応するアプリケーションプログラム(以下、単にアプリケーションとも称する)を実行することが行われる。この場合、アプリケーションは複数のタスクに分けられ、RTOSによってタスクの切換を行いながら、複数のタスクを実行することにより、アプリケーションが実行されることになる。RTOSの場合、タスクの切換(タスクスイッチ)に時間が必要とされる。このタスクスイッチの高速化を図る技術として、例えば特許文献3に記載されているように、ハードウェアでRTOSを実現するハーウェアRTOS(以下、HW-RTOSとも称する)がある。
本発明者は、HW-RTOSの採用によりタスクスイッチ時間を短縮し、リアルタイム性能を向上させ、さらにタスクスイッチ以外の観点でリアルタイム性能の向上を図る方法を検討した。
タスクは、その入力データが確定すると、実行させることが可能である。しかしながら、タスクのスケジューリングを行うタスクスケジューラは、複数のタスクにおいて、入力データの確定する順番が予測困難な場合、入力データが確定したタスクを優先的に実行させることができない。そのため、システム全体でのパフォーマンス低下が発生する。
特許文献1には、予め定められた時間経過したときタスクの処理を中断させてタスクを切り換える方式と、タスク自身が例えばフレームの区切りをきっかけに処理を中断してタスクを切り換える方式が記載されている。これらのどちらの方式であっても、各タスクについて複数の処理の入出力系統の現状に対する評価を行うためにデータの入出力を行うタスクを中断する必要が生じ、この中断時間の発生により、リアルタイム性能の低下が発生する。
特許文献2には、データの入出力部にFIFO(First In First Out)型記憶手段を設け、データがFIFO型記憶手段を介してタスクに供給される技術が記載されている。FIFO型記憶手段では最初に入力されたデータから順番に取り出す必要がある為、データの入出力部にFIFO型記憶手段を用いた場合、タスクは、直接入力データをランダムな順番でリード、または/および、直接出力データをランダムな順番でライトすることが出来ない。例えばあるタスクで入出力データを圧縮/解凍しなければならない場合は、FIFO型記憶手段に格納されているデータを別途ランダムアクセス可能なメモリ領域にコピーしてから圧縮/解凍を行い、さらに出力データをFIFO型記憶手段に格納する必要が生じる。これらのコピー時間の発生により、リアルタイム性能の低下が発生する。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態による半導体装置は、複数のマスタと、スレーブと、複数のマスタに接続され、複数のタスクがリアルタイムで実行されるように、複数のマスタを制御するリアルタイムスケジュール装置とを備える。リアルタイムスケジュール装置は、タスクが必要とする入力データが確定したか否かをモニタし、入力データが確定したと判定したタスクを優先的に実行させる。
一実施の形態によれば、複数のタスクをリアルタイムで実行可能で、パフォーマンスの向上を図ることが可能な半導体装置を提供することができる。
実施の形態1に係わる半導体装置の構成を示すブロック図である。 実施の形態1に係わる半導体装置に形成されたメモリ回路のアドレス領域を示す図である。 実施の形態1に係わる半導体装置の動作概要を説明するタイミング図である。 実施の形態1に係わる半導体装置のタイミングを示すタイミング図である。 (A)および(B)は、実施の形態1に係わるタイミング制約設定レジスタを説明する図である。 実施の形態1に係わる並列起動時の動作を示すタイミング図である。 実施の形態1に係わる並列起動時におけるリアルタイムスケジュール装置の制御を説明する図である。 (A)および(B)は、実施の形態1に係わる並列起動時の動作を説明するタイミング図である。 実施の形態1に係わる半導体装置の動作を説明する説明図である。 実施の形態1に係わるリアルタイムスケジュール装置の動作を示すフローチャート図である。 (A)~(C)は、実施の形態1に係わるデータ確定判定の構成を示す図である。 (A)および(B)は、実施の形態に係わる半導体装置の動作を説明するための図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は、原則として省略する。
(実施の形態1)
<半導体装置の構成>
図1は、実施の形態1に係わる半導体装置の構成を示すブロック図である。図1において、FLSは、半導体装置を示している。半導体装置FLSは、特に制限されないが、ネットワークシステム(図示しない)を構成する半導体装置である。ネットワークシステムは、複数の半導体装置等によって構成されるが、ここでは、説明に必要な半導体装置FLSのみが示されている。半導体装置FLSは、ネットワークシステムにおいて、フレームの送受信を行う機能を有している。例えば、半導体装置FLSは、フレームを受信し、受信したフレームに対して所定の演算および所定の処理を行い、演算および処理が行われたフレームを送信する機能を有している。
半導体装置FLSは、1個の半導体基板に複数の回路ブロックが形成されているが、図1には、説明に必要な回路ブロックのみが描かれている。図1において、CPU1~CPU3は、プロセッサを示し、DMA1~DMA4は、DMAコントローラを示している。また、RTSDは、リアルタイムスケジュール装置を示し、AD-CVは、アドレス変換回路を示し、BB-SWは、バススイッチ回路を示し、BK0~BK3は、図示しないメモリ回路によって構成されたバンクメモリを示している。
また、図1において、TISC1は、第1転送情報取得回路を示し、TISC2は、第2転送情報取得回路を示し、MACMは、メモリアクセスモニタ回路を示している。同図において、リアルタイムスケジュール装置RTSD内に示されているTISC_Rは、リアルタイムスケジュール装置RTSDが、第1転送情報取得回路TISC1および第2転送情報取得回路TISCを用いて処理を行う際に使用するタイミング制約レジスタを示している。同様に、リアルタイムスケジュール装置RTSD内に示されているMACM_Rは、リアルタイムスケジュール装置RTSDが、メモリアクセスモニタ回路MACMを用いて処理を行う際に使用するデータ確定判定レジスタを示している。ここでは、リアルタイムスケジュール装置RTSDが、タイミング制約レジスタTISC_Rおよびデータ確定判定レジスタMACM_Rを備えている例を説明するが、これに限定されず、これらのレジスタは半導体装置FLS内に設けられていればよい。
リアルタイムスケジュール装置RTSDは、ハードウェアRTOSの機能を有している。すなわち、特許文献3に記載されているように、ハードウェアで構成されたRTOSの機能を備えている。リアルタイムスケジュール装置RTSDは、プロセッサCPU1~CPU3およびDMAコントローラDMA1~DMA4に接続されており、これらのプロセッサおよびDMAコントロールを制御している。図1では、リアルタイムスケジュール装置RTSDによるプロセッサCPU1~CPU3の制御が、模式的に符号CPC1~CPC3で示されている。同様に、リアルタイムスケジュール装置RTSDによるDMAコントローラDMA1~DMA4の制御が、模式的に符号DMC1~DMC4で示されている。
リアルタイムスケジュール装置RTSDは、プロセッサCPU1~CPU3のそれぞれにタスクを割り当て、プロセッサが割り当てられたタスクを実行するように制御する。また、リアルタイムスケジュール装置RTSDは、タスクを実行するとき、必要に応じてDMAコントローラDMA1~DMA4を割り当てるように制御する。プロセッサCPU1~CPU3のそれぞれは、割り当てられたタスクを実行する際に、割り当てられたDMAコントローラを用いて、データの転送を行う。
アドレス変換回路AD-CVは、入力端子ADI1~ADI7、出力端子ADO1~ADO7および制御端子ADCを備えている。入力端子ADI1~ADI3には、対応するプロセッサCPU1~CPU3から出力されたアドレス信号が供給され、入力端子ADI4~ADI7には、対応するDMAコントローラDMA1~DMA4から出力されたアドレス信号が供給される。入力端子ADI1~ADI7に供給されたアドレス信号は、変換されて、対応する出力端子ADO1~ADO7から出力される。例えば、入力端子ADI1に供給されたプロセッサCPU1からのアドレス信号は、変換されて、対応する出力端子ADO1から出力される。同様に、入力端子ADI4に供給されたDMAコントローラDMA1からのアドレス信号は、変換されて、対応する出力端子ADO4から出力される。
制御端子ADCには、リアルタイムスケジュール装置RTSDから制御信号が供給され、この制御信号に従って、アドレス変換回路AD-CVは動作する。この制御信号は、例えば変換に用いられる変換情報を含んでいる。リアルタイムスケジュール装置RTSDから供給される変換情報に従って、アドレス変換回路AD-CVは、入力端子に供給されたアドレス信号を変換し、出力端子から出力する。
バススイッチ回路BB-SWは、入力端子BBI1~BBI7、出力端子BB0(0)~BB0(3)、BB1(0)~BB1(3)、BB2(0)~BB2(3)、BB3(0)~BB3(3)および制御端子BBCを備えている。入力端子BBI1~BBI7は、アドレス変換回路AD-CVの対応する出力端子ADO1~ADO7に接続され、出力端子は、バンクメモリBK0~BK3に接続されている。また、制御端子BBCは、リアルタイムスケジュール装置RTSDに接続されている。リアルタイムスケジュール装置RTSDが、選択信号を制御端子BBCに供給することにより、バススイッチ回路BB-SWは、供給された選択信号によって指定されている入力端子と出力端子を電気的に接続する。例えば、選択端子BBCに供給されている選択信号に従って、入力端子BBI1~BBI3が、出力端子BB0(0)~BB0(2)に電気的に接続され、入力端子BBI4~BBI7が出力端子BB1(0)~BB1(3)に電気的に接続される。一例を説明したが、電気的に接続する入力端子と出力端子は、制御端子BBCに供給される選択信号によって定められることになる。なお、バススイッチ回路BB-SWは、マスタとスレーブの間で双方向(ライト時はアドレス信号と同じ方向、リード時はアドレス信号と反対方向)にデータを転送する為のデータ入力端子、およびデータ出力端子を備えるが、図面では省略している。同様に、バススイッチ回路BB-SWは、アドレス信号と反対方向の転送制御信号を入力、および出力する端子も備えているが、図面では省略している。
実施の形態1においては、マスタとして機能する3個のプロセッサCPU1~CPU3と4個のDMAコントローラDMA1~DMA4から出力されているアドレス信号が、アドレス変換回路AD-CVによって変換され、バススイッチ回路BB-SWの入力端子に供給される。このアドレス変換により形成されたアドレス信号(以下、変換アドレス信号とも称する)が、出力端子BB0(0)~BB0(3)、BB1(0)~BB1(3)、BB2(0)~BB2(3)およびBB3(0)~BB3(3)のうち、制御端子BBCに供給されている選択信号によって指定された出力端子へ供給されることになる。
バンクメモリBK0~BK3は、バススイッチ回路BB-SWから供給された変換アドレス信号によってアクセスされ、変換アドレス信号によって指定されたアドレスに対してデータの書込み/読み出しが行われる。すなわち、バンクメモリBK0~BK3は、スレーブとして機能する。
バンクメモリBK0~BK3は、特に制限されないが、連続したアドレス領域に配置されている。また、バンクメモリBK0~BK3のそれぞれは、特に制限されないが、4個のメモリウェイによって構成されている。すなわち、バンクメモリBK0は、4個のメモリウェイBK0-W0~BK0-W3により構成され、バンクメモリBK1は、メモリウェイBK1-W0~BK1-W3により構成されている。同様に、バンクメモリBK2は、メモリウェイBK2-W0~BK2-W3により構成され、バンクメモリBK3は、メモリウェイBK3-W0~BK3-W3により構成されている。後で、図2を用いて詳しく説明するが、バンクメモリを構成する4個のメモリウェイは、バンクメモリのアドレス領域を分割したアドレス領域を有しており、互いに異なるアドレス領域を有している。
バススイッチ回路BB-SWの出力端子BB0(0)~BB0(3)は、メモリウェイBK0-W0~BK0-W3に接続され、出力端子BB1(0)~BB1(3)は、メモリウェイBK1-W0~BK1-W3に接続されている。同様に、バススイッチ回路BB-SWの出力端子BB2(0)~BB2(3)は、メモリウェイBK2-W0~BK2-W3に接続され、出力端子BB3(0)~BB3(3)は、メモリウェイBK3-W0~BK3-W3に接続されている。これにより、プロセッサおよびDMAコントローラから出力されたアドレス信号は、変換アドレス信号に変換されたあと、リアルタイムスケジュール装置RTSDの選択信号によって指定されたメモリウェイに供給され、メモリウェイ内のアドレスに対して、書込みまたは読み出し動作が行われることになる。
バススイッチ回路BB-SWは、7個のマスタ(CPU0~CPU3、DMA1~DMA4)と16個のスレーブ(メモリウェイBK0-W0~BK3-W3)間を、選択的に接続することになる。このとき、バススイッチ回路BB-SWは、複数のマスタと複数のスレーブ間を同時に接続するため、バススイッチ回路BB-SWは、マルチレイヤーマトリクス構成のバスシステムを構成していると見なすことができる。
第1転送情報取得回路TISC1は、バススイッチ回路BB-SWの入力端子BBI1~BBI7に接続されており、入力端子BBI1~BBI7のそれぞれにおける変換アドレス信号(アドレス情報または/および転送制御情報)に基づいて、サイクル数を取得する。すなわち、第1転送情報取得回路TISC1は、プロセッサCPU1~CPU3およびDMAコントローラDMA1~DMA4のそれぞれが、メモリウェイを、変換アドレス信号によってアクセスするときのサイクル数を取得する。取得したサイクル数は、リアルタイムスケジュール装置RTSDへ供給される。
また、第2転送情報取得回路TISC2は、バススイッチ回路BB-SWの出力端子BB0(0)~BB0(3)、BB1(0)~BB1(3)、BB2(0)~BB2(3)およびBB3(0)~BB3(3)に接続されている。この第2転送情報取得回路TISC2は、出力端子BB0(0)~BB0(3)、BB1(0)~BB1(3)、BB2(0)~BB2(3)およびBB3(0)~BB3(3)のそれぞれにおける変換アドレス信号(アドレス情報または/および転送制御情報)に基づいて、サイクル数を取得する。すなわち、第2転送情報取得回路TISC2は、バススイッチ回路BB-SWから出力される変換アドレス信号によって、メモリウェイへアクセスするサイクル数を取得する。取得したサイクル数は、リアルタイムスケジュール装置RTSDへ供給される。
メモリアクセスモニタ回路MACMは、バススイッチ回路BB-SWの出力端子BB0(0)~BB0(3)、BB1(0)~BB1(3)、BB2(0)~BB2(3)およびBB3(0)~BB3(3)に接続されている。メモリアクセスモニタ回路MACMは、出力端子BB0(0)~BB0(3)、BB1(0)~BB1(3)、BB2(0)~BB2(3)およびBB3(0)~BB3(3)のそれぞれにおける変換アドレス信号を取得する。取得した変換アドレス信号は、リアルタイムスケジュール装置RTSDへ供給される。
リアルタイムスケジュール装置RTSDは、第1転送情報取得回路TISC1および第2転送情報取得回路TISC2から供給されたサイクル数を基にして、同じ時間帯(同じ期間)において、複数のマスタから同一のスレーブ(メモリウェイ)へアクセスしているサイクル数を取得する。すなわち、アクセス競合が発生しているときのサイクル数をアクセスサイクル数として取得する。バススイッチ回路BB-SWは、任意の複数の入力端子と任意の複数の出力端子間を、同時に電気的に接続(電気接続)することが可能である。
例えば、プロセッサCPU1とDMAコントローラDMA1とが、同時にメモリウェイBK1-W0をアクセスする場合を考える。この場合、第1転送情報取得回路TISC1は、出力端子ADO1およびADO4における変換アドレス信号(アドレス情報または/および転送制御情報)の変化から、サイクル数を取得する。
この実施の形態1においては、このとき、第2転送情報取得回路TISC2は、出力端子BB1(0)における変換アドレス信号(アドレス情報または/および転送制御情報)の変化から、サイクル数を取得する。リアルタイムスケジュール装置RTSDは、第1転送情報取得回路TISC1から供給される2個(入力端子BBI1およびBBI4)のサイクル数から、複数(2個)のマスタがアクセスを行っていることを判定する。このとき、第2転送情報取得回路TISC2から供給されているサイクル数は、1個(出力端子BB1(0))であるため、リアルタイムスケジュール装置RTSDは、メモリウェイBK1-W0に対するアクセスにおいて、アクセス競合が発生していることを判定することができる。また、第1転送情報取得回路TISC1および第2転送情報取得回路TISC2のそれぞれから供給されているサイクル数を基にして、アクセス競合しているサイクル数(アクセスサイクル数)を判定することができる。
尚、バススイッチ回路BB-SWのバスプロトコル仕様によっては、第1転送情報取得回路TISC1または第2転送情報取得回路TISC2のいずれか一方だけで、アクセス競合が発生しているときのアクセスサイクル数を取得できる場合があり、この場合は第1転送情報取得回路TISC1または第2転送情報取得回路TISC2のいずれか一方を削除することができる。
メモリウェイBK1-W0に対して、2個のマスタのアクセスが競合している場合を説明したが、同じスレーブに対して、複数のマスタのアクセスが競合している場合も同様にして、リアルタイムスケジュール装置RTSDは、競合しているアクセスのサイクル数(アクセスサイクル数)を取得することができる。
アプリケーションを構成するタスクが、リアルタイムスケジュール装置RTSDによって、プロセッサCPU1~CPU3に割り当てられる。また、リアルタイムスケジュール装置RTSDは、タスクにおいて、DMAコントローラを使う場合、タスクにDMAコントローラDMA1~DMA4を割り当てる。プロセッサCPU1~CPU3のそれぞれが、割り当てられたタスクを実行することにより、アプリケーションが実行されることになる。
タスクの実行において、プロセッサCPU1~CPU3または/およびDMAコントローラDMA1~DMA4は、スレーブであるメモリウェイBK0(0)-W0~BK3(3)-W3をアクセスし、例えば演算等で用いるデータを、メモリウェイに書込みまたは/および読み出しを行う。もし、同一時間帯において、同じスレーブ(メモリウェイ)に対して、複数のマスタ(プロセッサまたは/およびDMAコントローラ)からアクセスがあった場合、第1転送情報取得回路TISC1および第2転送情報取得回路TISC2からのサイクル数に基づいて、リアルタイムスケジュール装置RTSDは、競合しているアクセスサイクル数を取得する。
リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMから供給された変換アドレス信号を基にして、バンクメモリBK0~BK3における所定のアドレスから始まる連続した所定のアドレス領域がアクセスされた否かを検出する。連続した所定のアドレス領域がアクセスされたと判定した場合、リアルタイムスケジュール装置RTSDは、タスクの入力データが確定したと判定し、その入力データを処理するタスクを起動させる。
<メモリ回路>
次に、スレーブとして機能するメモリ回路のアドレス領域を説明する。図2は、実施の形態1に係わる半導体装置に形成されたメモリ回路のアドレス領域を示す図である。メモリ回路は、連続したアドレス領域を有している。
図2において、左側に示した00000H~3FFFFHは、半導体装置FLSに形成されたメモリ回路のアドレスを示している。すなわち、実施の形態1において、メモリ回路は、アドレス00000Hから3FFFFHの連続したアドレス領域を有している。なお、本明細書において、数字の後ろ側に付された符合Hは、その数字が16進数であることを示している。
連続したアドレス領域は、4個に分割され、バンクメモリBK0~BK3に割り当てられている。図2では、00000H~0FFFFHのアドレス領域が、バンクメモリBK0の領域として割り当てられ、10000H~1FFFFHのアドレス領域が、バンクメモリBK1の領域として割り当てられている。同様にして、20000H~2FFFFHのアドレス領域が、バンクメモリBK2の領域として割り当てられ、30000H~3FFFFHのアドレス領域が、バンクメモリBK3の領域として割り当てられている。すなわち、バンクメモリBK0~BK3のそれぞれは、互いに異なる64KB(キロバイト)のアドレス領域を有している。
また、それぞれのバンクメモリは、4個のメモリウェイによって構成されている。この4個のメモリウェイには、実施の形態1では、バンクメモリの開始アドレスから1KB(キロバイト)単位で、メモリウェイがW0、W1、W2,W3、W0、W1、W2、W3と繰り返して割り当てられている。バンクメモリBK1を例にして述べると、バンクメモリBK1は、メモリウェイBK1-W0~BK1-W3により構成されており、バンクメモリBK1の開始アドレス10000Hから103FFHまでのアドレス領域が、メモリウェイBK1-W0の領域として割り当てられ、10400Hから107FFHまでのアドレス領域が、メモリウェイBK1-W1の領域として割り当てられている。同様にして、10800Hから10BFFHまでのアドレス領域が、メモリウェイBK1-W2の領域として割り当てられ、10C00Hから10FFFHまでのアドレス領域が、メモリウェイBK1-W3の領域として割り当てられている。メモリウェイBK1-W3の次は再びメモリウェイBK1-W0に戻り、11000Hから113FFHまでのアドレス領域が、メモリウェイBK1-W0の領域として割り当てられ、11400Hから117FFHまでのアドレス領域が、メモリウェイBK1-W1の領域として割り当てられている。同様にして、11800Hから11BFFHまでのアドレス領域が、メモリウェイBK1-W2の領域として割り当てられ、11C00Hから11FFFHまでのアドレス領域が、メモリウェイBK1-W3の領域として割り当てられている。同様にして、12000Hから1FFFFHまでのアドレス領域が、メモリウェイBK1-W0~BK1-W3に割り当てられている。すなわち、メモリウェイW0~W3のそれぞれは、1KBの連続したアドレス領域を16個備えている。
他のバンクメモリも、同様に、4個のメモリウェイにより構成され、メモリウェイのそれぞれの領域は、互いに異なるアドレス領域に割り当てられている。
<半導体装置の動作>
つぎに、実施の形態1に係わる半導体装置FLSの動作を説明する。ここでは、半導体装置FLSが実行するアプリケーションとして、半導体装置FLSが受信したフレームに所定の演算および所定の処理を行い、演算および処理の行われたフレームを送信するプログラムを例として説明する。また、受信したフレームのデータは、圧縮されているものとする。先ず、図3を用いて、動作の概要を説明する。図3は、実施の形態1に係わる半導体装置FLSの動作概要を説明するタイミング図である。
図3において、横軸tは時間を示している。図3において、送受信開始イベントの最小時間Minと最大時間Maxとの間のタイミングで、フレームの送受信が開始され、送受信終了イベントの最小時間Minと最大時間Maxとの間のタイミングで、フレームの送受信が完了する。図3において、左側に示した送受信開始イベントと送受信終了イベントの間で、フレーム1が、フレーム受信装置(図示しない)により受信され、通信バッファ0(図示しない)に格納される。通信バッファ0に格納されたデータは、所定の演算(出力演算)が行われて、SYNC0イベントに同期して半導体装置FLSの外部に出力される。一方、SYNC1イベントに同期して半導体装置FLSに入力されたデータは、所定の演算(入力演算)が行われ、通信バッファ1(図示しない)に格納される。通信バッファ1に格納されたデータは、右側に示した送受信開始イベントと送受信終了イベントの間で、フレーム送信装置(図示しない)によりフレーム2に変換されて送信される。送信されたフレーム2は、特に制限されないが、半導体装置FLSにネットワーク接続された外部装置で受信され、フレーム1と同様に、所定の演算が行われる。
このアプリケーションに許容される最小サイクルタイムは、図3に示すように、送受信終了イベントの最大時間Maxと送受信開始イベントの最小時間Minとの間の期間となる。半導体装置FLSは、この最小サイクルタイムの間に、アプリケーションを構成する複数の親タスクを実行する。図3では、アプリケーションを構成する親タスクが、3個の場合が示されている。すなわち、送受信終了イベントにより起動される第1親タスクと、シンク(SYNC)1イベントにより起動される第2親タスクと、第1タスクと同様に送受信終了イベントにより起動される第3親タスクである。ここで、第1親タスクは、通信バッファ1に格納されたデータを演算バッファ1へコピーし、所定の出力演算を行うタスクである。第2親タスクは、半導体装置FLSに入力されたデータに対して入力演算を行い、通信バッファ1へコピーするタスクである。また、第3親タスクは、第1親タスクが起動されてから、第2親タスクが終了するまでの間に、送受信開始イベントが発生しないことと、送受信終了イベントが発生しないことを監視するタスクである。
<タイミング制約>
第1親タスクは、送受信終了イベントからシンク(SYNC)0イベントの間の期間に、タスクの実行を終了しておくことが要求される。すなわち、第1親タスクの実行時間は、送受信終了イベントからシンク0イベントの間の期間と同じか、短いことが要求される。シンク0イベントのタイミングに注目すると、このシンク0イベントが発生するまでに、第1親タスクの出力が有効になっていることが必要とされる。同様に、第2親タスクの実行時間は、シンク1イベントと送受信開始イベントとの間の時間と同じか、短くすることが要求される。また、第3親タスクの実行時間は、フレーム1の送受信終了イベントとフレーム2の送受信開始イベントの間の時間と同じか、短いことが要求される。
第1親タスクが、例えばシンク0イベントまでに終了していないと、半導体装置FLSの外部に接続された装置は、シンク0イベントに同期して半導体装置FLSにより出力演算されたデータを受け取ることができず、誤動作してしまう。同様に、第2親タスクが送受信開始イベントまでに終了していない場合には、半導体装置FLSにネットワーク接続された外部装置は、半導体装置FLSにより入力演算されたデータを受け取ることができず、誤動作してしまう。同様に、第3親タスクが送受信開始イベントまたは/および送受信終了イベントまでに終了していない場合にも、誤動作してしまう。すなわち、第1親タスクには、シンク0イベントが発生するまでに、処理を完了させておくと言うタイミング制約1が存在する。同様に、第2親タスクは、送受信開始イベントの発生までに、処理を完了させておくと言うタイミング制約2があり、第3親タスクには、第1親タスクが起動されてから、第2親タスクが終了するまでの間に、送受信開始イベントが発生しないと言うタイミング制約3があり、第1親タスクが起動されてから、第2親タスクが終了するまでの間に、送受信終了イベントが発生しないと言うタイミング制約4が存在する。
図4は、実施の形態1に係わる半導体装置のタイミングをより詳しく示したタイミング図である。図4は、上記したタイミング制約1およびタイミング制約2に違反した場合を示している。図4に示したタイミングにおいては、「バッファコピー+出力演算」を行う第1親タスクに対して、リアルタイムスケジュール装置RTSDがプロセッサCPU1とDMAコントローラDMA1を割り当てている。同様に、「入力演算+バッファコピー」を行う第2親タスクに対しても、リアルタイムスケジュール装置RTSDがプロセッサCPU1とDMAコントローラDMA1を割り当てている。
第1親タスクが起動すると、通信バッファ1に格納されたデータをDMAコントローラDMA1が、演算バッファ1へ転送(コピー)する。通信バッファ1に格納されたデータのうちの先頭ブロックを演算バッファ1へ転送すると(転送終了)、プロセッサCPU1が、演算バッファ1に転送された先頭ブロックに対して演算を実施する。以降、同様の動作が行われ、演算バッファ1には、フレーム1の全ブロックが転送(コピー)され、プロセッサCPU1は、演算バッファ1に転送されたブロックに対しての演算を終了する。シンク0イベントまでに、転送が終了していない場合または/およびプロセッサCPU1による演算が終了していない場合、タイミング制約1に対して制約違反となる。言い換えるならば、タイミング制約1を満たしていないことになる。
また、シンク1イベントに同期して半導体装置FLSに入力されたデータは、ラッチ(入力ラッチ)され、保持される。シンク1イベントが発生することにより、第2親タスクが起動すると、プロセッサCPU1は、ラッチされているフレームの先頭ブロックに対して所定の演算(入力演算)を行う。所定の演算が行われたフレームの先頭ブロックは、DMAコントローラDMAによって通信バッファ1へ転送(コピー)される。以降、同様の動作が行われ、プロセッサCPU1は、ラッチされているフレームの全ブロックに対して所定の入力演算を行い、DMAコントローラDMA1は、所定の入力演算が行われたブロックを通信バッファ1へ転送する。プロセッサCPU1による演算の終了時刻またはDMAコントローラDMA1による転送(コピー)の終了時刻が、送受信開始イベントよりも遅れると、タイミング制約2に対する制約違反となる。
第1親タスクにおいて制約違反が発生すると、第1親タスクで出力演算した結果を使用する外部装置に適切なデータを出力することが困難となる。また、第2親タスクにおいて制約違反が発生すると、適切なフレームをフレーム2として送信することが困難となる。いずれの場合においても、予め定めたタイミングで、タスクの処理が終わらないため、半導体装置FLSが出力するデータまたは/およびフレームを使用する外部装置を、予め定めたタイミングで、正常に動作させることはできない。
また、第1親タスクから第2親タスクが実行されている期間、すなわち図3に示されている「バッファコピー+出力演算」の開始時刻から「入力演算+バッファコピー」の終了時刻までの最小サイクルタイムの間に、送受信開始イベントが発生しないようにすると言うタイミング制約3と、最小サイクルタイムの間に、送受信終了イベントが発生しないようにすると言うタイミング制約4も存在する。
<タイミング制約設定レジスタ>
実施の形態1に係わるリアルタイムスケジュール装置RTSDは、上記したタイミング制約に係わる設定レジスタを、図1に示したタイミング制約設定レジスタTISC_Rとして備えている。図5は、実施の形態1に係わるタイミング制約設定レジスタを説明する図である。図5(A)は、タイミング制約を説明するためのタイミング図である。図5(B)は、リアルタイムスケジュール装置RTSDが備えているタイミング制約設定レジスタTISC_Rの構成を示す図である。
図5(A)は、図3と類似しているため、相違点を説明する。図5(A)では、上記したタイミング制約1~4が、図3に示したタイミング図に追記されている。図5(A)に示すように、タイミング制約1は、送受信終了イベントの発生からシンク0イベントの発生までのタイミングの制約を表し、タイミング制約2は、シンク1イベントの発生から送受信開始イベントの発生までのタイミングの制約を表わしている。また、タイミング制約3および4は、「バッファコピー+出力演算」の開始時刻から、「入力演算+バッファコピー」の終了時刻までのタイミングの制約を表している。
図1では、1個のブロックとしてタイミング制約設定レジスタを示しているが、具体的には、リアルタイムスケジュール装置RTSDは、複数のタイミング制約レジスタを備えている。図5(B)には、複数のタイミング制約設定レジスタのうち、上記したタイミング制約1~4に対応したタイミング制約設定レジスタ1~4と、未設定のタイミング制約設定レジスタnが示されている。それぞれのタイミング制約設定レジスタ1~4によって表されるタイミング制約の内容は、図5(B)に示されている通りである。
それぞれのタイミング制約設定レジスタ1~4には、タイミング制約に係わる許容時間が設定される。すなわち、タイミング制約設定レジスタ1には、送受信終了イベントが発生してからシンク0イベントが発生するまでの時間であって、タイミング制約1の違反が発生しない時間が許容時間として設定される。また、タイミング制約設定レジスタ2には、シンク1イベントが発生してから送受信開始イベントが発生するまでの時間であって、タイミング制約2の違反が発生しない時間が許容時間として設定される。言い換えると、タイミング制約設定レジスタ1には、許容される第1親タスクの実行時間が設定され、タイミング制約設定レジスタ2には、許容される第2親タスクの実行時間が設定されると見なすこともできる。
また、タイミング制約設定レジスタ3および4には、「バッファコピー+出力演算」の開始時刻から「入力演算+バッファコピー」の終了時刻までの時間にフレームの送受信が行われないことを監視する為のタイミング制約が設定されると見なすこともできる。なお、タイミング制約設定レジスタ3と4は、1個のレジスタにしてもよい。
特に制限されないが、実施の形態1においては、上記したタイミング制約設定レジスタ1~4が、アプリケーションに対応する1セットとされている。アプリケーションを構成する親タスクの個数に応じて、1セットとされるタイミング制約設定レジスタの個数が定められる。リアルタイムスケジュール装置RTSDには、実行するアプリケーションの数に対応したセット数のタイミング制約設定レジスタが設けられることになる。
リアルタイムスケジュール装置RTSDは、タイミング制約設定レジスタ1~4に設定されている許容時間を基にして、それぞれの親タスクを実行したときに、制約違反が発生するか否かを判断し、制約違反が発生するときには、プロセッサ、DMAコントローラ、アドレス変換回路AD-CV、バススイッチ回路BB-SWまたは/およびメモリ回路の制御を変更する。この変更において、リアルタイムスケジュール装置RTSDは、上記した第1転送情報取得回路TISC1および第2転送情報取得回路TISC2を用いて取得したアクセス競合のアクセスサイクル数を使って、制約違反が発生しないように、プロセッサ、DMAコントローラ、アドレス変換回路AD-CV、バススイッチ回路BB-SWまたは/およびメモリ回路を制御する。
実施の形態1において、リアルタイムスケジュール装置RTSDは、並列起動数を変更することによって、制約違反が発生しないように、プロセッサ、DMAコントローラ、アドレス変換回路AD-CV、バススイッチ回路BB-SWおよびメモリ回路を制御する。次に、並列起動を説明する。
<並列起動>
実施の形態1において、半導体装置FLSは、3個のプロセッサCPU1~CPU3と4個のDMAコントローラDMA1~DMA4を備えている。また、フレームおよび演算データを格納するバッファとして、半導体装置FLSはメモリ回路を備えている。なお、このメモリ回路は、上記したように、16個のメモリウェイBK0-W0~BK3-W3を備えている。
上記した第1親タスクから第2親タスクにおいては、これらのプロセッサ、DMAコントローラまたは/およびメモリウェイを、時間的に並列に動作(起動)させることにより、それぞれの親タスクの実行時間が短くされる。
例えば、リアルタイムスケジュール装置RTSDは、第1親タスクおよび第2親タスクにおいては、フレームのコピーおよび演算(出力演算、入力演算)を複数のプロセッサ、複数のDMAコントローラおよび複数のメモリウェイを用いて処理を行うように制御する。一例として、第1親タスクおよび第2親タスクのそれぞれにおいて、2個のプロセッサCPU1、CPU2と、2個のDMAコントローラDMA1、DMA2およびバンクメモリBK0、BK1を構成する8個のメモリウェイを割り当てる場合を説明する。この場合、2個のプロセッサCPU1、CPU2が、時間的に並列に動作するため、並列起動の数(並列起動数)は2となる。勿論、これは一例であって、割り当てにより並列に起動する個数は任意に設定することが可能である。
<<並列起動時の動作>>
次に、並列起動数を2とした場合の動作を説明する。図6は、実施の形態1に係わる並列起動時の動作を示すタイミング図である。図6は、図4に類似しているので、相違点を主に説明する。
図4においては、リアルタイムスケジュール装置RTSDは、1個のプロセッサCPU1と1個のDMAコントローラDMA1に親タスクを割り当てていた。すなわち、並列起動数は1である。この場合、「バッファコピー+出力演算」の処理を行う第1親タスクおよび「入力演算+バッファコピー」の処理を行う第2親タスクのそれぞれにおいて、フレーム1のバッファコピー(転送)の処理は、タスクに割り当てられた1個のDMAコントローラDMA1によって行われ、演算(出力演算、入力演算)の処理は、タスクに割り当てられた1個のプロセッサCPU1によって行われる。
これに対して、並列起動数を2とした図6においては、「バッファコピー+出力演算」の処理を行う第1親タスクにおいて、フレーム1のバッファコピー(転送)の処理は、このタスクに割り当てられた2個のDMAコントローラDMA1、DMA2によって時間的に並列に行われる。また、第1親タスクにおいて、出力演算の処理も、タスクに割り当てられた2個のプロセッサCPU1、CPU2によって時間的に並列に行われる。同様に、「入力演算+バッファコピー」の処理を行う第2親タスクにおいて、入力演算の処理は、2個のプロセッサCPU1、CPU2によって並列的に行われ、入力演算結果(フレーム)のバッファコピー(転送)の処理も、2個のDMAコントローラDMA1、DMA2によって並列的に行われる。
並列的に処理が行われるため、バッファコピー(転送)の処理および演算(出力演算、入力演算)処理に要する時間を短くすることが可能となる。その結果、シンク0イベントが発生する前に、第1親タスクによって「バッファコピー+出力演算」の処理を終了させることが可能となる。同様に、送受信開始イベントが発生する前に、第2親タスクによって「入力演算+バッファコピー」の処理を終了させることが可能となる。すなわち、第1親タスクのタイミング制約1および第2親タスクのタイミング制約2に違反することなく、アプリケーションを実行することが可能となる。
<<リアルタイムスケジュール装置による制御>>
図7は、実施の形態1に係わる並列起動時におけるリアルタイムスケジュール装置の制御を説明する図である。また、図8は、実施の形態1に係わる並列起動時の動作を説明するタイミング図である。
図7は、図1に類似しているので、相違点を主に説明する。図7では、図1に示した第1転送情報取得回路TISC1、第2転送情報取得回路TISC2およびメモリアクセスモニタ回路MACMは省略されている。図7において、破線で示したSSAおよびSSBは、複数のマスタ(プロセッサCPU1~CPU3およびDMAコントローラDMA1~DMA4)と複数のスレーブ(メモリウェイBK0-W0~BK3-W3)との間のアクセスルートを示している。
リアルタイムスケジュール装置RTSDからアドレス変換回路AD-CVの制御端子ADCへ供給される変換情報によって、アドレス変換回路AD-CVによるアドレス変換のときにアドレスを任意に変更することが可能である。また、リアルタイムスケジュール装置RTSDからバススイッチ回路BB-SWの制御端子BBCへ供給される選択信号によって、アドレス変換回路AD-CVにより形成された変換アドレス信号は、任意のメモリウェイに供給することが可能である。これにより、例えば、プロセッサCPU1、CPU2およびDMAコントローラDMA1、DMA2のそれぞれから出力されているアドレス信号により、複数の任意のメモリウェイを並列的にアクセスすることが可能となる。
すなわち、リアルタイムスケジュール装置RTSDは、マスタとスレーブ間を結ぶアクセスルートを任意に選択することが可能である。このとき、リアルタイムスケジュール装置RTSDは、任意のマスタにタスクを割り当てることが可能であるため、アクセスルートのマスタも任意に選択することが可能である。ここでは、プロセッサCPU1、CPU2とDMAコントローラDMAコントローラDMA1、DMA2にタスクを割り当てている例で、マスタとスレーブ間のアクセスルートを説明しているが、これに限定されるものではない。勿論、マスタの個数も任意である。
リアルタイムスケジュール装置RTSDは、図7において符合CPC1、CPC2、DMC1およびDMC2で示した制御により、プロセッサCPU1、CPU2およびDMAコントローラDMA1、DMA2に第1親タスクおよび第2親タスクを割り当てる。また、リアルタイムスケジュール装置RTSDは、アドレス変換回路AD-CVの制御端子ADCに供給する変換情報およびバススイッチ回路BB-SWの制御端子BBCに供給する選択信号によって、プロセッサCPU1、CPU2およびDMAコントローラDMA1、DMA2が、メモリウェイBK0-W0~BK0-W3を含むバンクメモリBK0とメモリウェイBK1-W0~BK1-W3を含むバンクメモリBK1をアクセスすることができるように、アクセスルートを設定する。
これにより、プロセッサCPU1、CPU2およびDMAコントローラDMA1、DMA2によって、第1親タスクおよび第2親タスクが実行可能となる。次に、図8を用いて、並列起動時の動作を説明する。図8(A)は、並列起動時の動作を示すタイミング図である。また、図8(B)は、並列起動時のマスタ(プロセッサCPU1、CPU2およびDMAコントローラDMA1、DMA2)の動作タイミングを示すタイミング図である。図8(A)は、図3と同じであるため説明は省略するが、この図8(A)に示した「バッファコピー+出力演算」の処理に関する部分におけるマスタの動作タイミングが、図8(B)に示されている。
図8(B)において、破線で示したブロックDMA1(R)は、DMAコントローラDMA1がメモリウェイをアクセスして、メモリウェイからデータを読み出している期間を示しており、破線で示したブロックDMA1(W)は、DMAコントローラDMA1がメモリウェイをアクセスして、メモリウェイにデータの書込みを行っている期間を示している。同様に、破線のブロックDMA2(R)は、DMAコントローラDMA2がメモリウェイからデータを読み出している期間を示し、破線のブロックDMA2(W)は、DMAコントローラDMA2がメモリウェイにデータの書込みを行っている期間を示している。DMAコントローラは、読み出しながら、書込みを行うことが可能であるため、読み出し期間と書込み期間とは、一部が時間的に重なることが可能である。
また、図8(B)において、破線で示したブロックCPU1(RW)は、プロセッサCPU1が、メモリウェイをアクセスして、データを読み出し、読み出したデータに対して演算を行い、演算によって得られた演算結果のデータを、メモリウェイに書込みを行っている期間を示している。同様に、破線のブロックCPU2(RW)は、プロセッサCPU2が、メモリウェイをアクセスして、データを読み出し、演算を行い、演算結果のデータを、メモリウェイに書込みを行っている期間を示している。
図8(B)において、BK0-W0~BK0-W3およびBK1-W0~BK1-W3のそれぞれは、上記したメモリウェイである。ここでは、バンクメモリBK0を構成するメモリウェイBK0-W0~BK0-W3が、演算バッファ1として用いられ、バンクメモリBK1を構成するメモリウェイBK1-W0~BK1-W3が、通信バッファ1として用いられる場合を説明する。通信バッファ1として用いられるメモリウェイBK1-W0~BK1-W3のそれぞれには、送受信終了イベントの発生に同期して、フレーム1を構成するデータのブロックが格納される。特に制限されないが、図8(B)では、フレーム1は、8個のブロックを有しており、通信バッファ1として用いられるメモリウェイBK1-W0~BK1-W3のそれぞれに2ブロックが格納されているものとする。
送受信終了イベントが発生すると、アプリケーションが起動し、「バッファコピー+出力演算」の処理を行う第1親タスクが起動する。第1親タスクが起動すると、先ず、DMAコントローラDMA1、DMA2が動作を開始する。これにより、期間DMA1(R)、DMA2(R)において、DMAコントローラDMA1、DMA2が、アクセスルートを介して、メモリウェイBK1-W0、BK1-W2をアクセスし、メモリウェイBK1-W0、BK1-W2に格納されているフレーム1のデータを読み出す。また、期間DMA1(R)、DMA2(R)の開始よりも遅れて、期間DMA1(W)、DMA2(W)が発生する。この期間DMA1(W)、DMA2(W)において、DMAコントローラDMA1、DMA2は、アクセスルートを介して、メモリウェイBK0-W0、BK0-W1をアクセスし、期間DMA1(R)、DMA2(R)において読み出したデータを、メモリウェイBK0-W0、BK0-W1へ書き込む。これにより、メモリウェイBK1-W0、BK1-W1に格納されていたフレーム1に係わるデータが、メモリウェイBK0-W0、BK0-W1へ転送(コピー)される。この場合、2個のメモリウェイBK1-W0、BK1-W1に格納されていたデータが、実質的に同時に、2個のメモリウェイBK0-W0、BK0-W1へ転送されることになる。
メモリウェイBK1-W0、BK1-W1のそれぞれに格納されていたフレーム1に係わる1ブロック分のデータが、メモリウェイBK0-W0、BK0-W1へ転送されると、フレーム先頭ブロックの転送終了となる。
特に制限されないが、フレーム先頭ブロックの転送が終了したタイミングで、プロセッサCPU1、CPU2が動作を始める。プロセッサCPU1、CPU2は、期間CPU1(RW)、CPU2(RW)において、アクセスルートを介して、メモリウェイBK0-W0、BK0-W1にアクセスし、メモリウェイBK0-W0、BK0-W1に格納されているフレーム1に係わるデータを読み出し、出力演算を行い、演算結果のデータを、メモリウェイBK0-W0、BK0-W1へ書き込む(書き戻す)。この場合、メモリウェイBK0-W0、BK0-W1のそれぞれにおけるデータの読み出し、出力演算およびメモリウェイへの書込みは、実質的に同時に行われることになる。
プロセッサCPU1、CPU2が、期間CPU1(RW)、CPU2(RW)で処理を行っているとき、DMAコントローラDMA1、DMA2は、期間DMA1(R)、DMA2(R)において、アクセスルートを介して、メモリウェイBK1-W2、BK1-W3へアクセスし、フレーム1に係わるデータを読み出し、期間DMA1(W)、DMA2(W)において、アクセスルートを介して、メモリウェイBK0-W2、BK0-W3にアクセスし、読み出したフレーム1に係わるデータを書き込む。これにより、メモリウェイBK1-W2、BK1-W3からメモリウェイBK0-W2、BK0-W3へフレーム1に係わるデータの転送が行われる。
メモリウェイBK1-W2、BK1-W3のそれぞれに格納されていたフレーム1に係わる1ブロック分のデータが、メモリウェイBK0-W2、BK0-W3へ転送されると、プロセッサCPU1、CPU2は、期間CPU1(RW)、CPU2(RW)において、アクセスルートを介して、メモリウェイBK0-W2、BK0-W3にアクセスし、フレーム1に係わるデータを読み出し、出力演算を行って、メモリウェイBK0-W2、BK0-W3へ書き戻す。
これにより、フレーム1を構成する8個のブロックのうち4個のブロックについて、バッファコピーと出力演算が終了する。残りの4ブロックについても、上記したのと同様に行われる。この場合、プロセッサCPU1、CPU2が、期間CPU1(RW)、CPU(RW)において、メモリウェイBK0-W2、BK0-W3に格納されているデータの読み出し、出力演算および書き戻しを実行している期間と、DMAコントローラDMA1、DMA2が、メモリウェイBK1-W0、BK1-W1に格納されているデータを、メモリウェイBK0-W0、BK0-W1へ転送する期間DMA1(R)、DMA2(R)とが重なるように、プロセッサCPU1、CPU2およびDMAコントローラDMA1、DMA2は、動作する。
フレーム1を構成する8個のブロックの全てが、通信バッファ1を構成するメモリウェイBK1-W0~BK1-W3から、演算バッファ1を構成するメモリウェイBK0-W0~BK0-W3へ転送されたタイミングが、転送終了のタイミングとなる。また、プロセッサCPU1、CPU2によって、8個のブロックの全てに対して出力演算が行われ、演算結果のデータが、演算バッファ1に書き戻されたタイミングが、演算終了のタイミングとなる。
このように、並列起動数を増やすことにとより、タスクの実行時間を短くすることが可能であり、図8(B)では、シンク0イベントが発生するタイミング、すなわち出力が有効となっていることが要求されるタイミングよりも、時間的に前に、転送を終了(転送終了)し、演算を終了(演算終了)することが可能である。
ここでは、「バッファコピー+出力演算」の処理を行う第1親タスクを例にして、動作を説明したが、「入力演算+バッファコピー」の処理を行う第2親タスクについても同様である。
例えば、所定の処理を行う第2親タスクの結果が、演算バッファ1(例えば、メモリウェイBK0-W0~BK0-W3)に格納される。第2親タスクにおいては、先ずプロセッサCPU1、CPU2は、アクセスルートを介して、メモリウェイBK0-W0、BK0-W1にアクセスし、読み出し、入力演算および書き戻しを行う。次に、DMAコントローラDMA1,DMA2が、アクセスルートを介して、メモリウェイBK0-W0、BK0-W1をアクセスし、データを読み出して、通信バッファ1を構成するメモリウェイBK1-W0、BK1-W1へ書き込む。DMAコントローラDMA1、DMA2がデータの読み出しおよび書込みを行っている期間において、プロセッサCPU1、CPU2は、メモリウェイBK0-W2、BK0-W3をアクセスし、データの読み出し、出力演算および書き戻しを行う。以降、2個のプロセッサCPU1、CPU2と2個のDMAコントローラDMA1が並列に動作する。
<タスク入力データ確定によるタスク起動>
次に、タスク入力データが確定したとき、確定したデータに従ってタスクを起動する例を説明する。図3に関連して説明したように、受信フレームを構成するデータは圧縮されている。そのため、図3に示した受信フレーム1に対して所定の演算および所定の処理を行うためには、圧縮されているデータを解凍することが必要である。
従って、上記した第1親タスクにおいては、データを通信バッファ0にコピー(バッファコピー)した後、通信バッファ0から読み出して解凍し、解凍により得られたデータに対して演算を行うことになる。圧縮されているデータを解凍した場合、解凍により得られるデータのデータ量(データサイズ)は、圧縮したデータによって変わる。そのため、通信バッファ0から、たとえ同じデータ量のデータを読み出しても、解凍すると異なったデータ量のデータが得られることになる。
図9は、実施の形態1に係わる半導体装置FLSの動作を説明する説明図である。ここでは、上記した第1親タスクにおいて実施される処理と、処理により得られるデータのデータサイズの一例を説明する。説明を容易にするために、受信フレーム1は、データ量が4KBのデータであり、1KB単位の受信データブロック1~4として、通信バッファ0を構成するバンクメモリBK1のメモリウェイBK0-W0~BK0-W3に格納されているものとする。この受信データブロック1~4のそれぞれは、圧縮により得られたデータであり、図9において、受信データとして示されているように、それぞれのデータサイズは、1KB(1024バイト)である。
第1親タスクにおいては、先ず、受信データブロック1~4のそれぞれを、通信バッファ0からバンクメモリBK1により構成された演算バッファ1にコピーするバッファコピー処理(1)を実施する。バッファコピー処理(1)により演算バッファ1にコピーされる出力データは、圧縮されたデータであるため、出力データのデータサイズは、図9に示すように、受信データブロックと同じ1KBである。
次に、第1親タスクにおいて、受信データブロック1~4のそれぞれに対して、データ解凍処理(2)を実施し、その後で、受信データブロック1~4のそれぞれに対して、演算処理(3)を実施する。
ここでは、受信データブロック1~4を解凍したとき、受信データブロック1のデータサイズは、元の受信データブロック1のデータサイズの2.5倍となり、受信データブロック2のデータサイズは、元の受信データブロック2のデータサイズの1.5倍となるものとする。また、受信データブロック3のデータサイズは、解凍により、元の受信データブロック3のデータサイズの同じとなり、受信データブロック4のデータサイズは、元の受信データブロック4のデータサイズの2倍となるものとする。
このため、図9に示すように、データ解凍処理(2)により得られる出力データのサイズは、受信データブロック1では、2.5KB(2560バイト)となり、受信データブロック2では、1.5KB(1536バイト)となる。また、データ解凍処理(2)により、受信データブロック3のデータサイズは、1KB(1024バイト)となり、受信データブロック4のデータサイズは、2KB(2048バイト)となる。
演算処理(3)により得られる出力データのサイズは、演算の種類に従って変わるが、ここでは、図9に示すように、データ解凍処理(2)により得られた出力データのサイズと同じであるとする。
実施の形態に係わるリアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMから通知された変換アドレス信号とデータ確定判定レジスタMACM_Rに格納されている情報とに基づいて、タスクの入力データが確定したか否かを判定し、入力データが確定したと判定した場合、入力データに対応するタスクを優先的に起動する。リアルタイムスケジュール装置RTSDは、通知されている変換アドレス信号に基づいて、バンクメモリBK0~BK3において、所定の連続したアドレス領域に対してリードまたはライトのアクセスが行われたか否かを判定する。所定の連続したアドレス領域に対してアクセスが行われた場合、リアルタイムスケジュール装置RTSDは、タスクの入力データが確定したものと判定する。
<<リアルタイムスケジュール装置の動作>>
図10は、実施の形態1に係わるリアルタイムスケジュール装置RTSDの動作を示すフローチャート図である。ここでは、上記した所定の連続したアドレス領域として、1KB(1024バイト)を例にして、タスクの入力データが確定すると、タスクが起動されることを説明する。勿論、本発明は、ここで述べる1KBのサイズに限定されるものではない。所定の連続したアドレス領域のサイズは、タスクに割り当てられたマスタが、タスクを実行するのに必要なサイズのデータであればよい。
また、ここで述べるタスクは、子タスクである。上記した第1親タスク、第2親タスクおよび第3親タスクのそれぞれは、複数の子タスクによって構成されている。たとえば第1親タスクは、それを構成する複数の子タスクが実行されることによって、実行される。第2親タスクおよび第3親タスクも同様である。
ステップS0において、リアルタイムスケジュール装置RTSDは、フレームを受信し、フレーム受信終了イベントを検出する。フレーム受信終了イベントを検出すると、リアルタイムスケジュール装置RTSDは、次に述べるステップを実行する。
先ず、ステップS1において、リアルタイムスケジュール装置RTSDは、各子タスクで使用するアドレス領域へのライト(ライト転送)のモニタを開始する。すなわち、図1に示したメモリアクセスモニタ回路MACMによって、変換アドレス信号の取得を開始する。また、リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMから通知された変換アドレス信号と、データ確定判定レジスタMACM_Rとを用いて子タスクの起動の制御を開始する。
ステップS2において、リアルタイムスケジュール装置RTSDは、バッファコピー処理(1)が行われるように、(1)バッファコピー用タスクをマスタに割り当て、実行させる。リアルタイムスケジュール装置RTSDは、通信バッファを構成するバンクメモリにおいて、連続する1KBのアドレス領域の全てに、受信データブロック(入力データ)が格納されたか否かを判定し、1KBのアドレス領域の全てに、受信データが格納された場合、入力データが準備されたものと判定し、通信バッファから演算バッファへ受信データブロックをコピーする(1)バッファコピー用タスクを起動する。この場合、リアルタイムスケジュール装置RTSDは、通信バッファへの1KBの受信データブロックのライト(書き込み)を基にして、入力データの準備が完了しているか否かを判定していると見なすことができる。
次に、リアルタイムスケジュール装置RTSDは、ステップS3を実行する。ステップS3では、データ解凍処理(2)が行われるように、リアルタイムスケジュール装置RTSDは、データ解凍処理(2)を行う(2)データ解凍用タスクをマスタに割り当てる。リアルタイムスケジュール装置RTSDは、(2)データ解凍用タスクに対する入力データである受信データブロックが準備されたか否かを、図1に示したメモリアクセスモニタ回路MACMとデータ確定判定レジスタMACM_Tを用いて、判定する。具体的には、ステップS2において起動された(1)バッファコピー用タスクにより、演算バッファの連続した1KBのアドレス領域の全てに受信データがライト(コピー)されたか否かで、(2)データ解凍用タスクに対する入力データが準備されたか否を、リアルタイムスケジュール装置RTSDは判定する。1KBのアドレス領域の全てに受信データがライトされたと判定すると、リアルタイムスケジュール装置RTSDは、(2)データ解凍用タスクをマスタで起動させる。(2)データ解凍用タスクの実行により、受信データは、解凍され、演算バッファにライトされる。
ステップS4では、リアルタイムスケジュール装置RTSDは、受信データブロックに対して演算処理(3)を実行するように、演算処理(3)に対応する(3)演算用タスクをマスタに割り当てる。ステップS3において、(2)データ解凍用タスクが実行されると、解凍された受信データは、演算バッファにライトされる。ステップS4において、リアルタイムスケジュール装置RTSDは、ステップS3のときと同様に、(3)演算用タスクに対する入力データである受信データブロックが準備されたか否かを、メモリアクセスモニタ回路MACMとデータ確定判定レジスタMACM_Tを用いて、判定する。具体的には、ステップS3において起動された(2)データ解凍用タスクにより、演算バッファの連続した1KBのアドレス領域の全てに解凍された受信データがライトされているか否かで、(3)演算用タスクに対する入力データが準備されたか否を、リアルタイムスケジュール装置RTSDは判定する。1KBのアドレス領域の全てに解凍された受信データがライトされたと判定すると、リアルタイムスケジュール装置RTSDは、(3)演算用タスクをマスタで起動させる。(3)演算用タスクの実行により、解凍された受信データブロックに対して所定の演算が行われ、演算結果は、演算バッファにライトされる。
次に、ステップS5で、タイムスケジュール装置TRSDは、受信フレームに対する演算が終了し、受信した受信フレームに対する出力データを有効にする(図3では、出力有効と記載)。その後、ステップS6で、タイムスケジュール装置TRSDは、ステップS0で開始した処理を終了する。
次に、データ確定判定レジスタMACM_Rの詳細と、メモリアクセスモニタ回路MACMとデータ確定判定レジスタMACM_Rを用いたリアルタイムスケジュール装置RTSDの詳細動作を説明する。
<<データ確定判定レジスタ>>
図11は、実施の形態1に係わるデータ確定判定レジスタMACM_Rの構成を示す図である。データ確定判定レジスタMACM_Rは、3種類のレジスタを備えている。すなわち、データ確定判定レジスタMACM_Rは、図11(A)に示すタスク起動条件設定レジスタTSCR、図11(B)に示すタスク起動制御用ポインタTSSPおよび図11(C)に示すタスク一時停止条件設定レジスタTTSRを備えている。図11(C)のタスク一時停止条件設定レジスタTTSRについては、後で実施の形態2で説明するため、ここでは説明を省略する。
タスク起動条件設定レジスタTSCRは、子タスクに対応した複数のタスク起動条件設定レジスタを備えている。同様に、タスク起動制御用ポインタTSSPも、子タスクに対応した複数のタスク起動制御用ポインタを備えている。子タスクを基準として見た場合、タスク起動条件設定レジスタとタスク起動制御用ポインタとは、互いに対応していることになる。図11には、複数のタスク起動条件設定レジスタのうち2つのタスク起動条件設定レジスタTSCR_1およびTSCR_3が例示され、これらのタスク起動条件設定レジスタに対応するタスク起動制御用ポインタTSSP_1およびTSSP_3が例示されている。また、図11(B)に示しているタスク起動制御用ポインタTSSP_2およびTSSP_4は、後で説明する実施の形態2におけるタスク一時停止条件設定レジスタTTSR_1およびTTSR_2に対応している。
実施の形態1においては、アプリケーションを実行する前に、各子タスクに対してタスク起動条件設定レジスタおよびタスク起動制御用ポインタを割り当て、割り当てたタスク起動条件設定レジスタおよびタスク起動制御用ポインタに条件を情報として設定する。すなわち、タスク起動条件設定レジスタの起動対象タスク部(領域)と、タスク起動制御用ポインタの関連付けるタスク部(領域)に対して、割り当てる子タスクを特定する識別情報、たとえばタスクIDを設定する。また、タスク起動条件設定レジスタの条件部(領域)と、タスク起動制御用ポインタの条件部(領域)に対して、割り当てた子タスクにおいて、入力データが確定したと判定するための条件を設定する。
図11を例にして具体的に説明すると、次のとおりである。ここでは、図10で説明したデータ解凍処理(2)および演算処理(3)を例にして説明するが、図10で説明したバッファコピー処理(1)についても同様である。
タスク起動条件設定レジスタTSCR_1の起動対象タスク部と、タスク起動条件設定レジスタTSCR_1に対応するタスク起動制御用ポインタTSSP_1における関連付けるタスク部には、データを解凍する(2)データ解凍用タスク(識別子DDT)を設定する。また、タスク起動条件設定レジスタTSCR_3の起動対象タスク部と、タスク起動条件設定レジスタTSCR_3に対応するタスク起動制御用ポインタTSSP_3における関連付けるタスク部には、データを演算する(3)演算用タスク(識別子DAT)を設定する。
<<<タスク起動条件設定レジスタTSCR_1、TSCR_3と、タスク起動制御用ポインタTSSP_1、TSSP_3による動作>>>
タスク起動制御用ポインタTSSP_1の条件部には、(2)データ解凍用タスクを実行するマスタ(便宜上、第1マスタとする)が、(2)データ解凍用タスクを実行する際に、バンクメモリBK0~BK3からリードするアドレス領域の先頭アドレスが、アドレス情報SAD_1として設定される。一方、タスク起動制御用ポインタTSSP_1に対応するタスク起動条件設定レジスタTSCR_1の条件部には、(1)バッファコピー用タスクをマスタ(便宜上、第2マスタとする)が実行したときに、第1マスタが(2)データ解凍用タスクを実行するのに必要なサイズのデータに対応するアドレス領域が、アドレス情報SAD_1を先頭アドレスとした連続アドレス領域のアドレス範囲情報ADD_1として設定される。
リアルタイムスケジュール装置RTSDは、第2マスタが(1)バッファコピー用タスクを実行して、受信データブロックをバンクメモリにライトしているとき、次の処理を実行する。すなわち、リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMによって、タスク起動制御用ポインタTSSP_1のアドレス情報SAD_1で示されるアドレスを先頭アドレスとして、タスク起動条件設定レジスタTSCR_1のアドレス範囲情報ADD_1によって示される所定の連続したアドレス領域の全てに対してライトされたか否かを判定する。(1)バッファコピー用タスクの実行によって、所定の連続したアドレス領域の全てに対してライトが行われた判定した場合、リアルタイムスケジュール装置RTSDは、タスク起動条件設定レジスタTSCR_1の起動対象タスク部に設定されている(2)データ解凍用タスク(DDT)を、第1マスタで起動させる。
(2)データ解凍用タスクを実行するのに必要なデータのサイズを、上記したように1KB(1024バイト)とした場合、(1)バッファコピー用タスクが実行され、アドレス情報SAD_1で示される先頭アドレスから、1KBの連続したアドレス領域の全てに対して、第2マスタからの受信データのライトが実行されると、(2)データ解凍用タスクの入力データは確定したとして、(2)データ解凍用タスクが起動されることになる。
タスク起動制御用ポインタTSSP_3の条件部には、(3)演算用タスクを実行するマスタ(便宜上、第3マスタとする)が、演算用タスクを実行するときにリードするバンクメモリにおけるアドレス領域の先頭アドレスが、アドレス情報SAD_3として設定される。一方、タスク起動条件設定レジスタTSCR_3の条件部には、(2)データ解凍用タスクを第1マスタが実行したときに、第3マスタが(3)演算用タスクを実行するのに必要なサイズのデータに対応するアドレス領域が、アドレス情報SAD_3を先頭アドレスとした連続アドレス領域のアドレス範囲情報ADD_3として設定される。特に制限されないが、このアドレス範囲情報ADD_3も1KBであるとする。
リアルタイムスケジュール装置RTSDは、第1マスタによって(2)データ解凍用タスクが実行されるとき、メモリアクセスモニタ回路MACMによって、第1マスタによるバンクメモリに対するライトのアドレスを判定する。すなわち、第1マスタによって、アドレス情報SAD_3によって示される先頭アドレスから、アドレス範囲情報ADD_3によって示される1KBの連続したアドレス領域に対してライトがされたか否かを判定する。アドレス情報SAD_3によって示される先頭アドレスから、1KBのアドレス範囲の全てに対してライトが行われると、リアルタイムスケジュール装置RTSDは、(3)演算用タスクを第3マスタで起動する。
上記したように、リアルタイムスケジュール装置RTSDは、タスク起動条件設定レジスタTSCR_1とタスク起動制御ポインタTSSP_1を用いて、(2)データ解凍用タスクの入力データが確定(ライト)したとき、図10で説明したように、(2)データ解凍用タスクを起動することができる。また、リアルタイムスケジュール装置RTSDは、タスク起動条件設定レジスタTSCR_3とタスク起動制御ポインタTSSP_3を用いて、(3)演算用タスクの入力データが確定(ライト)したとき、図10で説明したように、(3)演算用タスクを起動することができる。
<<半導体装置の動作例>>
次に、図1に示した半導体装置FLSにおいて、タスク入力データが確定したときにタスクを起動する動作例を説明する。
図12は、実施の形態に係わる半導体装置の動作を説明するための図である。ここでは、バッファコピー処理(1)、データ解凍処理(2)および演算処理(3)のそれぞれが、複数の子タスク((1)バッファコピー用タスク、(2)データ解凍用タスクおよび(3)演算用タスク)が、割り当てられたマスタによって実行されることにより、実現される場合を説明する。リアルタイムスケジュール装置RTSDは、(1)バッファコピー用タスクにおいては、DMAコントローラDMA1~DMA4をマスタとして割り当て、(2)データ解凍用タスクおよび(3)演算用タスクにおいては、プロセッサCPU1~CPU3をマスタとして割り当てる。
図12(A)には、時間に伴う各タスクの実行状態が示されている。図12(A)においては、横軸は時間を示し、縦軸は処理を示している。また、図12(B)には、それぞれメモリウェイW0~W3を備えたバンクメモリBK0~BK3が示されている。ここでは、バンクメモリBK0が通信バッファ0として用いられ、バンクメモリBK1~BK3が演算バッファ1~3として用いられる。処理は、図12(A)の最も左側に白抜きの矢印で示すように、バッファコピー処理(1)、データ解凍処理(2)、演算処理(3)の順で実行される。
図12(A)において、それぞれ矢印付きの実線は、子タスクを示している。たとえば、図12(A)に示した子タスクの符号「(1)DMA1(R)ブロック1(R)」において、先頭の()で囲んだ数字「(1)」は、(1)バッファコピー用タスクであることを示し、符号「DMA1」は、タスクに割り当てられているマスタがDMAコントローラDMA1であることを示している。また、符号「DMA1」の後の()内の符号「R」は、DMAコントローラDMA1がリード(R)動作をすることを示し、符号「ブロック1」は、このタスクの対象が、受信データブロック1であることを示し、符号「ブロック1」の後の()内の符号「R」は、タスクの対象に対しての動作が、リードであることを示している。他のタスクについても、同様な表記方法で記載している。また、DMAコントローラおよびプロセッサを特定する符号の後の()内の符号Wは、DMAコントローラおよびプロセッサがライト動作をすることを示し、タスクの対象に対しての動作を示す()内の符号Wは、ブロックに対する動作がライトであることを示している。
また、図12においては、子タスクが実行されることにより、リードまたはライト動作が行われるメモリウェイと、当該子タスクとが並ぶように描かれている。例えば、図12(A)に示した子タスク「(1)DMA1(R)ブロック1(R)」は、この子タスクが実行されることにより、図12(B)に示した通信バッファ0を構成するメモリウェイBK-W0から受信データブロック1がリードされるため、この子タスクとメモリウェイBK-W0とが、図12において並ぶように描かれている。他の子タスクとメモリウェイとの関係も同様である。
同図には、図9で述べたように、1KBの受信データに対して、解凍処理により、受信データブロック1は、2.5倍になり、受信データブロック2は、1.5倍になり、受信データブロック3は、1倍となり、受信データブロック4は、2倍となる場合を示している。代表として、受信データブロック3と受信データブロック1について説明する。
<<<受信データブロック3>>>
受信データブロック3は、期間T3において、子タスク「(1)DMA3(R)ブロック3(R)」が実行されることにより、通信バッファ0のメモリウェイBK0-W2からリードされる。リードされた受信データブロック3は、期間T3において、子タスク「(1)DMA3(W)ブロック3(W)」が実行されることにより、演算バッファ1のメモリウェイBK1-W3の連続した1KBのアドレス領域にライトされる。
リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMを用いて、子タスク「(1)DMA3(W)ブロック3(W)」により、メモリウェイBK1-W2における連続した1KBのアドレス領域への受信データブロック3のライトを検出する。
連続した1KBのアドレス領域へのライトを検出すると、リアルタイムスケジュール装置RTSDは、タスク起動条件設定レジスタTSCR_1の条件が満たされたとして、期間T4において、子タスク「(2)CPU3(R)ブロック3(R)」を実行させる。これにより、メモリウェイBK1-W2から、受信データブロック3がリードされ、リードされた受信データブロック3に対してデータ解凍処理が行われる。受信データブロック3は、データ解凍後のサイズは、1倍であるため、データ解凍処理後の受信データブロックである解凍後受信データブロック3は、1KBとなる。
また、リアルタイムスケジュール装置RTSDは、期間T4において、子タスク「(2)CPU3(W)ブロック3(W)」を実行させる。これにより、解凍後受信データブロック3は、期間T4において、演算バッファ3のメモリウェイBK3-W1の連続した1KBのアドレス領域にライトされる。
リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMを用いて、子タスク「(2)CPU3(W)ブロック3(W)」によるメモリウェイBK3-W1における連続した1KBのアドレス領域への解凍後受信データブロック3のライトを検出する。
リアルタイムスケジュール装置RTSDは、連続した1KBのアドレス領域への解凍後受信データブロック3のライトを検出すると、タスク起動条件設定レジスタTSCR_3の条件が満たされたとして、時刻T5-3において、タスク「(3)CPU1ブロック3(R)」を起動する。このタスク「(3)CPU1(R)ブロック3(R)」によって、メモリウェイBK3-W1から解凍後受信データブロック3がリードされ、リードされた解凍後受信データブロック3に対して所定の演算が行われる。所定の演算より得られた演算後受信データブロック3は、リアルタイムスケジュール装置RTSDが、タスク「(3)CPU1(W)ブロック3(W)」を、時刻T5-3において起動することにより、演算バッファ1のメモリウェイBK1-W2にライトされる。
以上により、通信バッファ0のメモリウェイBK0-W2に格納された受信データブロック3は、バッファコピー処理(1)、データ解凍処理(2)および演算処理(3)が実行され、演算後受信データブロック3は、演算バッファ1のメモリウェイBK1-W2に格納される。
<<<受信データブロック1>>>
期間T1において、子タスク「(1)DMA1(R)ブロック1(R)」により、通信バッファ0のメモリウェイBK0-W0から1KBの受信データブロック1がリードされる。このリード動作と平行して、リードされている受信データブロック1は、同じ期間T1において、子タスク「(1)DMA1(W)ブロック1(W)」により、演算バッファ1のメモリウェイBK1-W0において、連続する1KBのアドレス領域にライトされる。
リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMを用いて、子タスク「(1)DMA1(W)ブロック1(W)」により、メモリウェイBK1-W0における連続した1KBのアドレス領域への受信データブロック1のライトを検出する。
連続した1KBのアドレス領域へのライトを検出すると、リアルタイムスケジュール装置RTSDは、タスク起動条件設定レジスタTSCR_1の条件が満たされたとして、期間T2において、子タスク「(2)CPU1(R)ブロック1(R)」を実行させる。これにより、メモリウェイBK1-W0から、受信データブロック3がリードされるとともに、データ解凍が行われる。解凍後受信データブロック1は、2.5倍の2.5KBとなるため、解凍後受信データブロック1のリードは、時刻T4-2まで行われている。
リアルタイムスケジュール装置RTSDは、解凍後受信データブロック1において、最初の連続する1KBの解凍後受信データブロック1(以下、1番目の解凍後受信データブロック1と称する)を、期間T2において、子タスク「(2)CPU1(W)ブロック1(W)」により、演算バッファ2のメモリウェイBK2-W0の連続した1KBのアドレス領域にライトする。また、リアルタイムスケジュール装置RTSDは、解凍後受信データブロック1において、次に連続する1KBの解凍後受信データブロック1(以下、2番目の解凍後受信データブロック2と称する)を、期間T3において、子タスク「(2)CPU1(W)ブロック1(W)」により、演算バッファ2のメモリウェイBK2-W1の連続した1KBのアドレス領域にライトする。さらに、リアルタイムスケジュール装置RTSDは、解凍後受信データブロック1において、残りの連続する0.5KBの解凍後受信データブロック1を、期間T4の始まりから時刻T4-2の間で、子タスク「(2)CPU1(W)ブロック1(W)」により、演算バッファ2のメモリウェイBK2-W3の連続した0.5KBのアドレス領域にライトする。
リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMを用いて、子タスク「(2)CPU1(W)ブロック1(W)」により、メモリウェイBK2-W0における連続した1KBのアドレス領域への1番目の解凍後受信データブロック1のライトを検出する。メモリウェイBK2-W0における連続した1KBのアドレス領域へのライトを検出すると、リアルタイムスケジュール装置RTSDは、タスク起動条件設定レジスタTSCR_3の条件が満たされたとして、期間T3において、子タスク「(3)CPU3(R)ブロック1(R)」を起動する。この子タスクにより、メモリウェイBK2-W0から1番目の解凍後受信データブロック1がリードされ、所定の演算が行われる。所定の演算により得られた1番目の演算後受信データは、期間T3において、子タスク「(3)CPU3(W)ブロック1(W)」により、演算バッファ3のメモリウェイBK3-W1にライトされる。
リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMを用いて、子タスク「(2)CPU1(W)ブロック1(W)」により、メモリウェイBK2-W1における連続した1KBのアドレス領域への2番目の解凍後受信データブロック1のライトを検出する。メモリウェイBK2-W1における連続した1KBのアドレス領域へのライトを検出すると、リアルタイムスケジュール装置RTSDは、タスク起動条件設定レジスタTSCR_3の条件が満たされたとして、時刻T4-1から時刻T5-1の期間において、子タスク「(3)CPU2(R)ブロック1(R)」を起動する。この子タスクにより、メモリウェイBK2-W1から2番目の解凍後受信データブロック1がリードされ、所定の演算が行われる。所定の演算により得られた2番目の演算後受信データは、時刻T4-1から時刻T5-1の期間において、子タスク「(3)CPU2(W)ブロック1(W)」により、演算バッファ3のメモリウェイBK3-W2にライトされる。
リアルタイムスケジュール装置RTSDは、時刻T4-2において、メモリウェイBK2-W3の連続したアドレス領域への3番目の解凍後受信データブロック1のライトの完了したのを、検出すると、時刻T5-1において子タスク「(3)CPU2(R)ブロック1(R)」を起動する。この子タスク「(3)CPU2(R)ブロック1(R)」により、時刻T5-1から時刻T5-3の期間において、メモリウェイBK2-W3にライトされている3番目の解凍後受信データブロック1が、リードされ、リードされた解凍後受信データブロック1に対して所定の演算が行われる。
また、リアルタイムスケジュール装置RTSDは、時刻T5-1から時刻T5-3の期間において、子タスク「(3)CPU2(W)ブロック1(W)」を起動する。これにより、3番目の演算後受信データブロック1は、時刻T5-1から時刻T5-3の期間において、タスク「(3)CPU2(W)ブロック1(W)」により、演算バッファ1のメモリウェイBK1-W1にライトされる。
3番目の解凍受信データブロック1は、0.5KBであるため、メモリウェイBK2-W3に解凍後受信データブロック1をライトするとき、連続する1KBのアドレス領域を指定する全ての変換後アドレス信号は、バススイッチ回路BB-SWから出力されない。しかしながら、受信データブロック1の最後を示すエンド情報が、予めフレーム1に含まれ、3番目の解凍後受信データブロック1に含まれている。リアルタイムスケジュール装置RTSDは、このエンド情報を検出すると、3番目の解凍後受信データブロック1のライトが完了したものと判定し、上記したように、タスク「(3)CPU2(R)ブロック1(R)」を起動する。すなわち、プロセッサCPU2に割り当てられている別のタスクが、時刻T5-1で終了したタイミングで、プロセッサCPU2に対してタスク「(3)CPU2(R)ブロック1(R)」を起動させる。
以上で、通信バッファ0のメモリウェイBK0-W0に格納された受信データブロック1に対して、バッファコピー処理(1)、データ解凍処理(2)および演算処理(3)が実行され、演算結果は、メモリウェイBK1-W0、BK1-W1およびBK3-W2に格納されることになる。
リアルタイムスケジュール装置RTSDは、受信データブロック2および4についても、受信データブロック1および3と同様にして、タスクを起動する。
以上述べたように、リアルタイムスケジュール装置RTSDは、バンクメモリの連続した1KBのアドレス領域に対してライトが行われたか否かを検出する。連続した1KBのアドレスに対してライトが行われたことを検出すると、リアルタイムスケジュール装置RTSDは、次に起動すべきタスクの入力データが確定したものと判定して、タスクスケジューリングに従って、次のタスクを起動する。また、リアルタイムスケジュール装置RTSDは、メモリの連続した1KBのアドレス領域に対してライトが行われていなくても、エンド情報を検出すると、次に起動すべき子タスクの入力データが確定したものと判定して、タスクスケジューリングに従って、次のタスクを起動する。従って、リアルタイムスケジュール装置RTSDは、その入力データが確定したタスクを優先的に起動することが可能となり、パフォーマンスの向上を図ることが可能である。
上記したように、リアルタイムスケジュール装置RTSDは、連続した1KBのアドレス領域を超える解凍後受信データブロック3については、複数の連続した1KBのアドレス領域に分割している。すなわち、解凍後受信データブロック3については、タスクの入力データが確定しているか否かを判定する条件である1KBのアドレス領域を超えないように分割していると見なすことができる。
<変形例>
図12では、データ解凍用タスクによって解凍された解凍後受信データブロックのサイズが、所定のアドレス領域のサイズの整数倍にならない場合(図12では、0.5KB)、エンド情報をメモリウェイにライトするようにしていた。これにより、メモリウェイへのアクセス回数を低減することが可能である。
変形例においては、データ解凍用タスクに割り当てられたマスタ(図12では、プロセッサ)が、解凍後受信データブロックのサイズが、所定のアドレス領域のサイズ(図12では、1KB)の整数倍となるように、解凍後受信データブロックに対して調整用データを付加する。調整用データは、例えば2進論理値“0”である。解凍後受信データブロックを、メモリウェイにライトするとき、1KBの整数倍となるように、マスタは、解凍後受信データブロックをメモリウェイにライトしたあと、整数倍にするのに不足する部分に、複数の2進論理値“0”をライトする。
受信データブロック3を例にして説明すると、期間T4において、マスタであるプロセッサCPU1は、3番目の解凍後受信データブロック3である0.5KBのデータをBK2-W3にライトしたあとのアドレス領域に、0.5KB分の2進論理値“0”をライトする。これにより、期間T4において、解凍後受信データブロック3に関連するタスク「(2)CPU1(W)ブロック1(W)」によって、メモリウェイBK2-W3の連続した1KBのアドレス領域にライトが行われることになる。その結果、リアルタイムスケジュール装置RTSDは、エンド情報を検出しなくても、次タスクに対する入力データが確定したか否かを判定することが可能となる。
(実施の形態2)
実施の形態2に係わる半導体装置FLSにおいては、図1に示したデータ確定判定レジスタMACM_Rが、図11(C)に示したタスク一時停止条件設定レジスタTTSRを備えている。一時停止条件設定レジスタTTSRは、一時停止を行うタスクに対応した数の一時停止条件設定レジスタTTSR_1~TTSR_n(図示せず)を備えている。ここでは、一時停止を行うタスクとして、データ解凍用タスクおよび演算用タスクの2つを例にして説明する。図11(C)において、一時停止条件設定レジスタTTSR_1は、データ解凍用タスクに対応し、一時停止条件設定レジスタTTSR_2は、演算用タスクに対応している。
一時停止条件設定レジスタTTSR_1およびTTSR_2は、条件部と停止対象タスク部とを備えている。停止対象タスク部には、一時停止を行うタスクを特定する識別子が設定され、条件部には、一時停止を行うときの条件が設定される。特に制限されないが、半導体装置FLSを動作させる前に、識別子および条件が、一時停止条件設定レジスタTTSR_1およびTTSR_2の停止対象タスク部および条件部に設定される。図11(C)では、一時停止条件設定レジスタTTSR_1の停止対象タスク部にデータ解凍用タスクの識別子DTTが設定され、条件部に条件ADS_1が設定されている。また、一時停止条件設定レジスタTTSR_2の停止対象タスク部に演算用タスクの識別子DATが設定され、条件部に条件ADS_2が設定されている。
図11(C)には、一時停止条件設定レジスタTTSR_1、TTSR_2を用いて、タスクを一時的に停止する条件が、タスク停止条件説明として記載されている。勿論、このタスク停止条件説明は、説明のためであって、一時停止条件設定レジスタTTSR_1、TTSR_2に含まれているものではない。
図1に示したリアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMと、一時停止条件設定レジスタTTSR_1、TTSR_2と、図11(B)に示したタスク起動制御用ポインタTSSP_2およびTSSP_4を用いて、タスクを一時的に停止するように制御する。
条件ADS_1およびADS_2は、対応するタスク起動制御用ポインタTSSP_2およびTSSP_4に設定されている条件SAD_2およびSAD_4により特定される先頭アドレスからの所定のアドレス領域を指定するアドレス情報である。ここでは、条件ADS_1およびADS_2として、4KB(4096バイト)のアドレス範囲情報が設定されているものとして説明する。リアルタイムスケジュール装置RTSDは、条件ADS_1およびADS_2として設定された4KBを閾値として、この閾値を超えたとき、停止対象タスクDTTおよびDATを、一時的に停止する。次に、データ解凍用タスクおよび演算用タスクを一時停止するときの動作を説明する。
<一時停止対象タスクが(2)データ解凍用タスク>
図12で説明したように、(2)データ解凍用タスク(例えば「(2)CPU1(W)ブロック1(W)」)は、解凍後受信データブロック3を、バンクメモリにライトする。バンクメモリにライトされた解凍後受信データブロック3は、その後、(3)データ演算用タスク「(3)CPU2(R)ブロック1(R)」によってリードされる。
リアルタイムスケジュール装置RTSDは、(2)データ解凍用タスクによってライトされたアドレス領域に対して、(2)データ解凍用タスク以外のタスクに割り当てられたマスタによってリードされていないアドレス領域が、条件SAD_2により特定される先頭アドレスから条件ADS_1の閾値(4KB)を超えているか否かを検出する。すなわち、リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMからの変換アドレス信号によって、(2)データ解凍用タスクによってライトされたアドレス領域に対して、他のタスクに割り当てられたマスタによってリードのアクセスが行われたか否かを検出する。この検出により、リードのアクセスが行われていないアドレス領域が、条件SAD_2およびADS_1により特定されるアドレス領域(閾値)を超えていた場合、タイムスケジュール装置RDSTは、(2)データ解凍用タスクを一時的に停止する。
(2)データ解凍用タスク「(2)CPU1(W)ブロック1(W)」が実行されることにより、メモリウェイにおいて、連続した1KBのアドレス領域に解凍後受信データブロックがライトされると、(3)データ演算用タスク「(3)CPU2(R)ブロック1(R)」の入力データが確定したものと判定される。すなわち、(2)データ解凍用タスクによってライトされた解凍後受信データブロックは、通常であれば、この(2)データ解凍用タスク以外の(3)データ演算用タスクに割り当てられたマスタによってリードされることになる。ところが、なんらかの理由により、入力データが確定した後も、(3)データ演算用タスクによってリードされないと、解凍後受信データブロックがバンクメモリから溢れることが危惧される。実施の形態2によれば、条件SAD_2で設定されている先頭アドレスと条件ADS_1で設定されている閾値とで特定されるアドレス領域を超えるようなことが生じた場合、(2)データ解凍用タスクを一時的に停止することにより、解凍後受信データブロックがメモリウェイから溢れることを防ぐことが可能である。
<一時停止対象タスクが(3)演算用タスク>
図12で説明したように、(3)演算用タスク(例えば「(3)CPU1(W)ブロック1(W)」)は、所定の演算により得られた演算後受信データブロック1を、メモリウェイにライトする。メモリウェイにライトされた演算後受信データは、この(3)演算用タスク以外の別のタスクに割り当てられたマスタよってリードされ、別のタスクの入力データとなる。
リアルタイムスケジュール装置RTSDは、(3)演算用タスクによってライトされたアドレス領域に対して、(3)演算用タスク以外の別のタスクに割り当てられたマスタによってリードされていないアドレス領域が、条件SAD_4に設定されている先頭アドレスから条件ADS_2の閾値(4KB)を超えているか否かを検出する。すなわち、リアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMからの変換アドレス信号によって、(3)演算用タスクによってライトされたアドレス領域に対して、別のタスクに割り当てられたマスタによってリードのアクセスが行われたか否かを検出する。この検出により、リードのアクセスが行われていないアドレス領域が、条件SAD_4およびADS_2により特定されるアドレス領域(閾値)を超えていた場合、リアルタイムスケジュール装置RTSDは、(3)演算用タスクを一時的に停止する。
(2)データ解凍用タスクの場合と同様に、なんらかの理由により、メモリウェイに演算後受信データブロックをライトした後も、別のタスクによってリードされないと、演算後受信データブロックがメモリウェイに格納され続け、所定の領域を超えて蓄積されすぎることが危惧される。実施の形態2によれば、条件SAD_4およびADS_2で設定されている閾値を超えるようなことが生じた場合、(3)演算用タスクを一時的に停止することにより、バンクメモリに演算後受信データブロックが、所定の領域を超えて格納されすぎるのを防ぐことが可能である。
リアルタイムスケジュール装置RTSDは、例えば周期的に、タスク起動制御用ポインタTSSP_2およびTSSP_4と、タスク一時停止条件設定レジスタTTSRと、メモリアクセスモニタ回路MACMを用いて、条件部に設定されている条件SAD_2、SAD_4、ADS_1、ADS_2で特定される閾値を超えているか否かの検出を行う。これにより、周期的に、解凍後受信データブロックが、メモリウェイからオーバーフローしていないかが検出され、演算受信データブロックが、バンクメモリにおいて所定の領域を超えて格納されすぎていないかを検出することができる。また、オーバーフローが発生している場合または/および格納されすぎている場合には、対象のデータをライトするタスクを一時的停止し、オーバーフローの解消または/および格納されすぎを低減することが可能である。
実施の形態では、1KBの連続するアドレス領域を例にして説明したが、これに限定されるものではない。すなわち、1KBは一例であり、アドレス領域は、任意のアドレス範囲でよい。また、連続しない不連続のアドレス領域であってもよい。例えば、2つの不連続のアドレス領域に解凍受信データブロックをライトする場合、それぞれのアドレス領域に対して、図11(A)および(B)で説明したレジスタを設けるようにすればよい。さらに、受信データを例として説明したが、これに限定されるものでもない。また、具体例として、バンクメモリが64KBで、メモリウェイが1KBを例にして説明したが、これに限定されるものではない。
実施の形態に係わるリアルタイムスケジュール装置RTSDは、メモリアクセスモニタ回路MACMと、データ確定判定レジスタMACM_Rとを用いて、タスクが必要とする入力データが確定したか否かをモニタしていると見なすことができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
AD-CV アドレス変換回路
BB-SW バススイッチ回路
BK0~BK3 バンクメモリ
BK0-W0~BK0-W3、BK1-W0~BK1-W3、BK2-W0~BK2-W3、BK3-W0~BK3-W3 メモリウェイ
CPU1~CPU3 プロセッサ
DMA1~DMA4 DMAコントローラ
FLS 半導体装置
RTSD リアルタイムスケジュール装置
MACM メモリアクセスモニタ回路
MACM_R データ確定判定レジスタ
TISC1 第1転送情報取得回路
TISC2 第2転送情報取得回路
TISC_R タイミング制約レジスタ

Claims (7)

  1. 複数のマスタと、
    メモリを備えるスレーブと、
    前記複数のマスタに接続され、複数のタスクを実行するように、前記複数のマスタを制御するリアルタイムスケジュール装置と、
    前記スレーブに対するマスタのアクセスを検出するアクセスモニタ回路と、
    を備え、
    前記リアルタイムスケジュール装置は、タスクが必要とする入力データが確定したか否かをモニタし、入力データが確定したと判定したタスクを優先的に実行させ
    前記モニタは、前記アクセスモニタ回路によって検出されたアドレス信号が、前記メモリにおける連続した所定のアドレス領域を指定するか否かを検出し、前記連続した所定のアドレス領域を指定するとき、タスクが必要とする入力データが確定したと判定し、
    前記リアルタイムスケジュール装置は、前記連続した所定のアドレス領域の先頭アドレスが設定されるタスク起動制御用ポインタと、前記連続した所定のアドレス領域の範囲を示すアドレス情報が設定されるタスク起動条件設定レジスタとを備え、
    前記リアルタイムスケジュール装置は、前記アクセスモニタ回路によって検出されたアドレス信号が、前記タスク起動制御用ポインタに設定された先頭アドレスと前記タスク起動条件設定レジスタに設定されたアドレス情報によって定まる前記連続した所定のアドレス領域の全てを指定したとき、タスクが必要とする入力データが確定したと判定する、半導体装置。
  2. 請求項に記載の半導体装置において、
    前記複数のタスクに対応した複数のタスク起動制御用ポインタおよび複数のタスク起動条件設定レジスタを備える、半導体装置。
  3. 請求項に記載の半導体装置において、
    前記半導体装置は、タスクを一時停止させる閾値が設定されるタスク一時停止条件設定レジスタを備え、
    前記リアルタイムスケジュール装置は、第1のタスクがライトしている前記メモリのアドレス領域において、第2のタスクがリードしていないアドレス領域が、前記タスク一時停止条件設定レジスタに格納されている閾値を超えたとき、前記第1のタスクを一時的に停止させる、半導体装置。
  4. 請求項に記載の半導体装置において、
    前記入力データを構成するデータのサイズが、前記連続した所定のアドレス領域に満たないとき、前記連続した所定のアドレス領域には、前記入力データを構成するデータとエンド情報が格納され、前記リアルタイムスケジュール装置は、前記エンド情報を検出すると、タスクが必要とする入力データが確定したと判定する、半導体装置。
  5. 請求項に記載の半導体装置において、
    前記入力データを構成するデータのサイズが、前記連続した所定のアドレス領域に満たないとき、前記連続した所定のアドレス領域には、前記入力データを構成するデータと所定の情報が格納される、半導体装置。
  6. 請求項に記載の半導体装置において、
    前記入力データを構成するデータのサイズが、前記連続した所定のアドレス領域を超えるとき、前記入力データは、前記連続した所定のアドレス領域を超えないように、分割される、半導体装置。
  7. 請求項1に記載の半導体装置において、
    前記複数のマスタのそれぞれから、前記スレーブにアクセスしているサイクル数を求める転送情報取得回路を、更に備え、
    タスクの実行にタイミング制約があるとき、前記タイミング制約が満たされるように、前記転送情報取得回路によって求められたサイクル数を基にして、前記複数のマスタと前記スレーブ間のアクセスルートの変更または/およびアクセススケジューリングを行う、半導体装置。
JP2018205514A 2018-10-31 2018-10-31 半導体装置 Active JP7122942B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018205514A JP7122942B2 (ja) 2018-10-31 2018-10-31 半導体装置
US16/576,468 US11263046B2 (en) 2018-10-31 2019-09-19 Semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018205514A JP7122942B2 (ja) 2018-10-31 2018-10-31 半導体装置

Publications (2)

Publication Number Publication Date
JP2020071688A JP2020071688A (ja) 2020-05-07
JP7122942B2 true JP7122942B2 (ja) 2022-08-22

Family

ID=70326717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018205514A Active JP7122942B2 (ja) 2018-10-31 2018-10-31 半導体装置

Country Status (2)

Country Link
US (1) US11263046B2 (ja)
JP (1) JP7122942B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120272015A1 (en) 2011-04-20 2012-10-25 Microsoft Corporation Virtual machine trigger

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3840045B2 (ja) 2000-08-04 2006-11-01 株式会社東芝 データ処理方法及びデータ処理装置
US6857035B1 (en) * 2001-09-13 2005-02-15 Altera Corporation Methods and apparatus for bus mastering and arbitration
JP2004220093A (ja) 2003-01-09 2004-08-05 Toshiba Corp プロセッサ、実行タスク決定装置及び演算処理方法
US20040139441A1 (en) 2003-01-09 2004-07-15 Kabushiki Kaisha Toshiba Processor, arithmetic operation processing method, and priority determination method
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
CN101529383B (zh) 2006-08-24 2012-05-30 科尼龙硅公司 任务处理装置
US20080195843A1 (en) * 2007-02-08 2008-08-14 Jaya 3D Llc Method and system for processing a volume visualization dataset
US20170293980A1 (en) * 2011-04-04 2017-10-12 Aon Securities, Inc. System and method for managing processing resources of a computing system
US20180004835A1 (en) * 2016-06-30 2018-01-04 Facebook, Inc. Data classification workflows implemented with dynamically modifiable directed graphs

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120272015A1 (en) 2011-04-20 2012-10-25 Microsoft Corporation Virtual machine trigger

Also Published As

Publication number Publication date
US20200133727A1 (en) 2020-04-30
JP2020071688A (ja) 2020-05-07
US11263046B2 (en) 2022-03-01

Similar Documents

Publication Publication Date Title
JP5498505B2 (ja) データバースト間の競合の解決
US20060059489A1 (en) Parallel processing system, interconnection network, node and network control method, and program therefor
US11204799B2 (en) Semiconductor device and systems using the same
JP5360061B2 (ja) マルチプロセッサシステム及びその制御方法
JP5040050B2 (ja) 複数チャネルdmaコントローラおよびプロセッサシステム
KR100708096B1 (ko) 버스 시스템 및 그 실행 순서 조정방법
JP2007219816A (ja) マルチプロセッサシステム
KR100630071B1 (ko) 다중 프로세서 환경에서의 dma를 이용한 고속 데이터전송 방법 및 그 장치
US9652299B2 (en) Controlling the state of a process between a running and a stopped state by comparing identification information sent prior to execution
JP7122942B2 (ja) 半導体装置
JP2010165175A (ja) バスの使用権を制御する装置および方法
JP2001333137A (ja) 自主動作通信制御装置及び自主動作通信制御方法
US20050135402A1 (en) Data transfer apparatus
JP2009025896A (ja) データ処理装置及びデータ処理方法
WO2007039933A1 (ja) 演算処理装置
JP2007226374A (ja) データ処理装置
WO2019188177A1 (ja) 情報処理装置
JP4727480B2 (ja) 情報処理方法、情報処理システム、情報処理装置、マルチプロセッサ、情報処理プログラム及び情報処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体
JPH09204311A (ja) 情報処理システム
JP2000267928A (ja) メモリ制御装置
JPH0830549A (ja) バス制御装置
JPH09218859A (ja) マルチプロセッサ制御システム
JP2011108051A (ja) バス制御装置、プロセッサ、電子装置及びバス制御方法
JP2004220309A (ja) マルチプロセッサシステム
JPS5856057A (ja) 割込信号発生装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220511

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: 20220712

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220809

R150 Certificate of patent or registration of utility model

Ref document number: 7122942

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150