JP2019057071A - 半導体装置および当該半導体装置において用いられるプログラム - Google Patents
半導体装置および当該半導体装置において用いられるプログラム Download PDFInfo
- Publication number
- JP2019057071A JP2019057071A JP2017180447A JP2017180447A JP2019057071A JP 2019057071 A JP2019057071 A JP 2019057071A JP 2017180447 A JP2017180447 A JP 2017180447A JP 2017180447 A JP2017180447 A JP 2017180447A JP 2019057071 A JP2019057071 A JP 2019057071A
- Authority
- JP
- Japan
- Prior art keywords
- storage area
- group
- semiconductor device
- storage
- memories
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
Abstract
【課題】マルチレイヤバス構成を採用する半導体装置において、処理の競合を抑制する技術を提供する。【解決手段】マルチレイヤバス構成を採用する半導体装置は、各バスマスタから各メモリへのアクセスを制御するための制御装置と、各メモリに含まれる記憶領域を識別する識別情報と記憶領域が属するグループとの対応関係を記憶するための記憶装置とを備え、制御装置は、グループの指定を含む記憶領域の確保命令に基づいて、記憶装置に格納される対応関係から命令で指定されたグループと識別情報との対応関係を参照して、指定されたグループに属する1以上の記憶領域を特定し、特定した記憶領域の使用状況に基づいて、バスマスタによって使用される記憶領域を確保し、確保された記憶領域にアクセスするための情報を命令に対応するバスマスタに出力する。【選択図】図7
Description
この開示は、半導体装置に関し、より特定的には、マルチレイヤバス構成を採用する半導体装置に関する。
近年、半導体製造技術の向上に伴い半導体集積回路が微細化され、プロセッサコアと複数の機能ブロックとが同一チップに搭載されるシステムオンチップ化が進展している。システムオンチップは主に、機能ごとに複数のバスを予め設けるマルチレイヤバス構成を採用されている。このバス構成によれば、複数のバスマスタが異なるバススレーブに同時にアクセスできる。
マルチレイヤバス構成を採用する半導体装置に関し、例えば、特開平10−228413号公報(特許文献1)は、「マスタがメモリにリード/ライトするデータを複数のメモリバンクの各々に設けたマスタごとのバッファを経由させ、メモリバンクに関するバッファのアクセスの競合を調停手段で調停する」装置を開示している([要約]参照)。
基本的に、バスマスタからメモリ(バススレーブ)へのアクセスは、予めソフトウェア開発者によって設計されている。開発者は複数のバスマスタが同じメモリへ同じタイミングでアクセスしないように(競合しないように)、ソフトウェアを設計する。その理由は、競合した処理(タスク)に要する時間が長くなってしまうためである。しかしながら、複数の処理が競合しないようにソフトウェアを設計するのは難しい場合がある。そのため、ある局面において、処理の競合が生じないようにする技術が必要とされている。
また、開発者は処理の競合が生じないように、いずれのメモリを用いて処理(タスク)を行なうかを考えながらソフトウェアを開発しなければならないため、効率よくソフトウェアを開発することが難しい。そのため、ある局面において、開発者がソフトウェア開発を容易に行なうことができる技術が必要とされている。
本開示は、上記のような問題を解決するためになされたものであって、ある局面における目的は、マルチレイヤバス構成を採用する半導体装置における処理の競合を抑制する技術を提供することである。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
ある実施形態に従う半導体装置は、複数のバスマスタと、複数のバスとを備える。各バスは各バスマスタにそれぞれ接続されている。半導体装置は、複数のメモリをさらに備える。各メモリは、複数のバスの少なくともいずれかに接続されており、少なくとも1以上の記憶領域を含む。半導体装置は、各バスマスタから当該バスマスタに接続されているバスを介した複数のメモリのいずれかへのアクセスを制御するための制御装置と、各記憶領域を識別する識別情報と当該記憶領域が属するグループとの対応関係を記憶するための記憶装置とをさらに備える。制御装置は、各記憶領域の使用状況を検出し、複数のバスマスタのいずれかによって使用される記憶領域を複数の記憶領域のいずれかから確保する命令に基づいて、対応関係から命令で指定されたグループと識別情報との対応関係を参照して、複数の記憶領域の中から指定されたグループに属する1以上の記憶領域を特定し、検出された使用状況に基づいて、特定された1以上の記憶領域の中から使用される記憶領域を確保し、確保された記憶領域にアクセスするための情報を命令に対応するバスマスタに出力する。
ある実施形態に従う半導体装置は、異なるバスマスタが同時に同じメモリにアクセスしようとすること(競合)を抑制し得る。
以下、この技術的思想の実施形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。なお、以下で説明される各実施形態および各変形例は、適宜選択的に組み合わされてもよい。
まず、関連技術に従う半導体装置の構成および課題について説明し、その上で当該課題を解決し得る実施形態に従う半導体装置について説明する。
[関連技術]
(半導体装置100Xの構成)
図1は、関連技術に従う半導体装置100Xの構成を表す図である。図1を参照して、半導体装置100Xは、装置の全体的な動作を制御する制御装置として機能するCPU(Central Processing Unit)110と、バスマスタとして機能するマスタ121〜123とを有する。CPU110と各マスタ121〜123とは、バス130を介して接続されている。
(半導体装置100Xの構成)
図1は、関連技術に従う半導体装置100Xの構成を表す図である。図1を参照して、半導体装置100Xは、装置の全体的な動作を制御する制御装置として機能するCPU(Central Processing Unit)110と、バスマスタとして機能するマスタ121〜123とを有する。CPU110と各マスタ121〜123とは、バス130を介して接続されている。
マスタ121〜123は、例えば、DMAC(Direct Memory Access Controller)又は他のCPUであり得る。
半導体装置100Xはさらに、複数のバス131〜133を有する。各バス131〜133は、各マスタ121〜123にそれぞれ接続されている。具体的には、マスタ121はバス131に、マスタ122はバス132に、マスタ123はバス133にそれぞれ接続されている。
バス131〜133の各々は、マルチプレクサ141〜145に接続されている。各マルチプレクサ141〜145は、バススレーブとして機能する各メモリ151〜155にそれぞれ接続されている。また、バス131〜133は、バスアービタ171〜173にて制御されている。バスアービタ171〜173は、各マスタ121〜123からのアクセス要求を識別しメモリ151〜155のどのメモリに対してアクセス要求を行うかを決定する。
各マルチプレクサ141〜145は、バス131〜133からのアクセス要求に基づいて、いずれか一つのバスと対応するメモリとを電気的に接続するようにバスを選択する。各マルチプレクサ141〜145は、同時に複数のバスからアクセス要求を受け付けた場合には、マルチプレクサ内の優先順位に基づいて、いずれか一つのバスを選択しバスと対応するメモリとを電気的に接続する。各マルチプレクサ141〜145は、選択しているバスのアクセスが完了した場合には、マルチプレクサ内の優先順位に基づいて次のバスを選択し、アクセス要求のあるバスを順次切り替えてバスと対応するメモリとを電気的に接続する。
メモリ151〜155は例えば、CD(Compact Disk)やDVD(Digital Versatile Disc)、HDD(Hard Disk Drive)などの大容量ストレージデバイス、CPUが実行するプログラムの格納やプログラム実行時のワーク領域として用いられるSDRAM(Synchronous Dynamic Random Access Memory)、フラッシュ・メモリなどのメモリデバイスであり得る。
上記の例では、各メモリ151〜155は、マルチプレクサを介してバス131〜133の各々に接続されているが、他の局面において、バス131〜133の少なくともいずれかに接続されていればよい。また、各メモリ151〜155は、少なくとも1以上の候補領域を含む。候補領域は、メモリの全記憶領域のうち、複数のマスタ121〜123のいずれかによって使用される可能性のある領域である。以下、候補領域のうち、複数のマスタ121〜123のいずれかによって使用される領域を「処理領域」と言う。つまり、処理領域は候補領域に属し、候補領域はメモリの全記憶領域に属する。
上記のように、半導体装置100Xのマスタ121〜123には互いに異なるバス131〜133が接続されており、これらの各バス131〜133には、メモリ151〜155が接続されている。半導体装置100Xはこのようなマルチレイヤバス構成を採用することにより、複数のマスタ(バスマスタ)が異なるメモリ(バススレーブ)に同時にアクセスできる。
半導体装置100Xはさらに記憶装置160を有する。記憶装置160は、アプリケーションプログラム(以下、単に「アプリ」とも言う)161Xと、リアルタイムオペレーティングシステムOS162Xと、管理テーブル164Xとを保持している。以下、リアルタイムオペレーティングシステムを単に「OS」とも言う。アプリ161Xは、OS162X上で動作する。また、アプリ161Xは、複数の処理(タスク)を実現するための命令を含む。CPU110は、記憶装置160にアクセス可能に構成される。なお、他の局面において、制御プログラム162Xおよび管理テーブル164Xは、メモリ151〜155のいずれかに格納されていてもよい。係る場合、半導体装置100Xは、記憶装置160を有さなくともよい。
ある局面において、アプリ161Xは、マスタがタスクを実行するために必要な処理領域を確保する命令(システムコール)をOS162X(のカーネル)に通知する。OS162Xは、システムコールに応じて、複数の候補領域のいずれかから処理領域を確保する。OS162Xは、確保された処理領域にアクセスするための情報(例えば、アドレス)をアプリ161Xに出力する。アプリ161Xは、マスタ121〜123のうちシステムコールに対応するマスタ(つまり、タスクを実行するマスタ)に対して当該アドレスを出力する。当該マスタは、入力されたアドレスに基づいて処理領域にアクセスし、当該処理領域を使用してタスクを実行する。
上記のようにCPU110は、OS162Xを実行することにより、各マスタ121〜123から当該マスタに接続されているバスを介した複数のメモリ151〜155のいずれかへのアクセスを制御する制御装置として機能する。
(関連技術に従うOS162Xが処理領域を確保する処理)
次に、図2および図3を用いてOS162Xが処理領域を確保する処理をより具体的に説明する。
次に、図2および図3を用いてOS162Xが処理領域を確保する処理をより具体的に説明する。
図2は、関連技術に従う管理テーブル164Xのデータ構造を表す。図2を参照して、管理テーブル164Xは、複数の候補領域の各々を識別するIDと、当該候補領域のアドレスと、当該候補領域の使用状況と、の対応関係を保持している。使用状況は、対応する候補領域を使用しているタスクを識別する情報と、当該タスクによって使用されている処理領域のアドレスとを含む。
図1および図2に示される例において、ID「1」の候補領域と、ID「6」の候補領域とはメモリ151に属する。ID「2」の候補領域はメモリ152に属する。ID「3」の候補領域はメモリ153に属する。ID「4」の候補領域はメモリ154に属する。ID「5」の候補領域はメモリ155に属する。また、図2に示される例において、ID「1」の候補領域は、タスク1とタスク2によって使用されている。
図3は、関連技術に従う半導体装置100Xが処理領域を確保する処理を表すフローチャートである。図3に示される各処理は、CPU110がOS162X又はアプリ161Xを実行することにより実現される。
ある局面においてアプリ161Xは、タスクを実行するにあたり、複数のマスタ121〜123のいずれかによって使用される処理領域を確保する命令(システムコール)をOS162Xに通知する。より具体的には、アプリ161Xの各タスクには、候補領域を識別するIDが設定されている。アプリ161Xは、タスクに設定されているIDを含むシステムコールをOS162Xに通知する。OS162Xは、アプリ161Xからシステムコールを受け付けたことに応じて(ステップS310でYES)、ステップS320の処理を実行する。
ステップS320において、OS162Xは、指定されたID(システムコールに含まれるID)に対応する候補領域が十分に空いているか否かを判断する。より具体的には、OS162Xを実行するCPU110は、管理テーブル164Xを参照して、指定されたIDに対応する候補領域の使用状況に基づいて、当該候補領域のうちタスクによって使用されていない記憶領域の容量(空き容量)を算出する。CPU110は、算出した空き容量がタスクを実行するのに必要な記憶領域の容量以上である場合に、指定されたIDに対応する候補領域が十分に空いていると判断する。
OS162Xは、指定されたIDに対応する候補領域が十分に空いていると判断した場合(ステップS320でYES)、空いている記憶領域の中から処理領域を確保する。OS162Xはさらに、管理テーブル164Xの使用状況に確保した処理領域の情報を登録する。
一方、OS162Xは、指定されたIDに対応する候補領域が十分に空いていないと判断した場合(ステップS320でNO)、指定されたIDに対応する候補領域が十分に空くまで待機する。
ステップS340において、OS162Xは、確保した処理領域のアドレスをアプリ161Xに出力する。アプリ161Xは、複数のマスタ121〜123のうちステップS310の命令(システムコール)に対応するマスタ(つまり、タスクの実行主体)に当該アドレスを出力する。これにより、マスタは、確保された処理領域を使用してタスクを実行する。
アプリ161Xは、マスタによるタスク(処理)が終了すると、その旨をOS162Xに通知する。OS162Xは当該通知に応じて、確保していた処理領域を解放する。OS162Xはさらに、管理テーブル164Xの使用状況から解放した処理領域の情報を削除する。
(関連技術に従う半導体装置100Xにおいて生じ得る競合)
上記のように関連技術に従うOS162Xは、タスクごとに予め設定されているIDに対応する候補領域から処理領域を確保する。このIDは、アプリ161Xの開発者がタスクごとに予め設定する。より具体的には、アプリ161Xの開発者は、1つのメモリが複数のタスクによって使用されないように、タスクごとにIDを設定する。しかし、場合によってはタスクごとのIDが適切に設定されないこともある。
上記のように関連技術に従うOS162Xは、タスクごとに予め設定されているIDに対応する候補領域から処理領域を確保する。このIDは、アプリ161Xの開発者がタスクごとに予め設定する。より具体的には、アプリ161Xの開発者は、1つのメモリが複数のタスクによって使用されないように、タスクごとにIDを設定する。しかし、場合によってはタスクごとのIDが適切に設定されないこともある。
図4は、関連技術に従うOS162Xのタスクスケジューリングを表す図である。図4を参照して、OS162Xは、時刻T1〜時刻T3において、マスタ121がタスク1を実行するために必要な記憶領域として、ID「1」およびID「2」の候補領域(に属する処理領域)を確保する。なお、2つの候補領域を確保する理由は、パイプライン処理を実現するためであって、必ずしも複数の候補領域を確保する必要はない。
OS162Xは、時刻T2〜時刻T5において、マスタ122がタスク2を実行するために必要な記憶領域として、ID「3」およびID「4」の候補領域を確保する。OS162Xは、時刻T4〜時刻T7において、マスタ123がタスク3を実行するために必要な記憶領域として、ID「4」およびID「5」の候補領域を確保する。OS162Xは、時刻T6〜時刻T8において、マスタ121がタスク1を実行するために必要な記憶領域として、ID「1」およびID「2」の候補領域を確保する。
上記の場合、時刻T4〜時刻T5(ハッチング部分)において、ID「4」に対応するメモリ154に複数のマスタ(マスタ122とマスタ123)がアクセスしようとしている。ある局面において、OS162Xは、優先順位などに従い、ID「4」に対応するメモリ154へのアクセス主体(マスタ)を時分割で切り替える。この場合、タスク2およびタスク3に要する時間が長くなってしまう。
他の局面において、OS162Xはまず、優先順位が高い一方のタスクの実行主体(マスタ)にID「4」に対応するメモリへのアクセス権(バス占有権)を与える。OS162Xは、当該タスクが完了した後に、他方のタスクの実行主体にID「4」に対応するメモリへのアクセス権(バス占有権)を与える。この場合、優先順位が低いタスクに要する時間が長くなってしまう。
上記のように、関連技術に従う半導体装置100Xは、タスクごとのIDが適切に設定されない場合、複数のタスクが競合し、これらタスクに要する時間が長くなってしまう。以下に、このような課題を解決し得る実施形態に従う半導体装置100の構成および制御について説明する。
[実施形態1]
(概要)
ある局面において、実施形態1に従うタスクには複数の候補領域が設定される。実施形態1に従う制御装置(OS162)は、当該複数の候補領域の使用状況に基づいて、複数の候補領域の中から競合(遅延)が生じにくい処理領域を確保する。バスマスタは、確保された処理領域を使用してタスクを実行する。
(概要)
ある局面において、実施形態1に従うタスクには複数の候補領域が設定される。実施形態1に従う制御装置(OS162)は、当該複数の候補領域の使用状況に基づいて、複数の候補領域の中から競合(遅延)が生じにくい処理領域を確保する。バスマスタは、確保された処理領域を使用してタスクを実行する。
(半導体装置100の構成)
図5は、実施形態1に従う半導体装置100の構成を表す図である。実施形態1に従う半導体装置100のハードウェア構成は、関連技術に従う半導体装置100Xのハードウェア構成と同じである。ただし、実施形態1に従う記憶装置160に格納されるデータと、関連技術に従う記憶装置160に格納されるデータとは相違する。具体的には、実施形態1に従う記憶装置160は、アプリ161X、OS162X、および管理テーブル164Xに替えてアプリ161、OS162、および管理テーブル164を保持している。
図5は、実施形態1に従う半導体装置100の構成を表す図である。実施形態1に従う半導体装置100のハードウェア構成は、関連技術に従う半導体装置100Xのハードウェア構成と同じである。ただし、実施形態1に従う記憶装置160に格納されるデータと、関連技術に従う記憶装置160に格納されるデータとは相違する。具体的には、実施形態1に従う記憶装置160は、アプリ161X、OS162X、および管理テーブル164Xに替えてアプリ161、OS162、および管理テーブル164を保持している。
(管理テーブル164)
図6は、管理テーブル164のデータ構造の一例を表す。管理テーブル164は、候補領域の各々を識別するIDと、当該候補領域のアドレスと、グループIDと、当該候補領域の使用状況と、の対応関係を保持している。
図6は、管理テーブル164のデータ構造の一例を表す。管理テーブル164は、候補領域の各々を識別するIDと、当該候補領域のアドレスと、グループIDと、当該候補領域の使用状況と、の対応関係を保持している。
グループIDは、候補領域が属するグループを識別する。関連技術に従うアプリ161Xを構成する各タスクには、IDが設定されている、つまり、タスクごとに予め使用する候補領域が設定されている。一方、実施形態1に従うアプリ161を構成する各タスクには、ID又はグループIDが設定されている。実施形態1に従うOS162は、IDを指定するタスク(以下、「IDタスク」とも言う)に対して、指定されたIDに対応する候補領域から処理領域を確保する。また、OS162は、グループIDを指定するタスク(以下、「GIDタスク」とも言う)に対して、指定されたグループIDにより特定されるグループに属する候補領域の中から処理領域を確保する。
ある局面において、アプリ161の開発者は、処理時間(バスの占有時間)の長いタスク(例えば、DMACに接続される周辺機器から画像データを受信するタスク)に対してグループIDを設定し、処理時間の短いタスクに対してIDを設定する。その理由は、処理時間の長いタスクどうしが競合してタスクの終了タイミングが大幅に遅延することを避けるためである。
他の局面において、アプリ161の開発者は、他のタスクとの競合を必ず避ける必要のあるタスクに対して1つの候補領域のみで構成されるグループのグループIDを設定する。これにより、当該1つの候補領域に対応するID又はグループIDを設定されたタスクは、他のタスクとの競合を避けることができる。
ある局面において、アプリ161を構成する各タスクには、優先順位が設定されていてもよい。OS162は、複数のタスクが競合した場合に、優先順位が高いタスクに対応するマスタに優先的にバス占有権を付与するように構成される。
使用状況は、対応する候補領域を使用しているタスクを識別する情報と、当該タスクによって使用されている処理領域のアドレスと、当該タスクがIDタスクであるか又はGIDタスクであるかを判別するフラグとを含む。一例として、IDタスクはフラグが「0」に設定され、GIDタスクはフラグが「1」に設定される。
図5および図6に示される例において、ID「1」、ID「2」、ID「3」、ID「6」の候補領域(が属するメモリ151〜153)はグループID「1」のグループに属し、ID「4」、ID「5」の候補領域(が属するメモリ154、155)はグループID「2」のグループに属する。
また、ID「1」の候補領域のうち、アドレス「0x000〜0x1FFF」の処理領域は、グループIDを指定するタスク1によって使用されている。また、ID「1」の候補領域のうち、アドレス「0x2000〜0x3FFF」の処理領域は、IDを指定するタスク2によって使用されている。
各候補領域に対応するグループIDは、例えば、OS162の開発者によって設定される。開発者は、メモリの特性(例えば転送速度)およびバス構成を考慮して、グループIDを設定する。例えば、転送速度が略同じである複数のメモリが同じグループに属するようにグループIDが設定される。例えば、タスクの実行主体(マスタ)からバスブリッジを介さずにアクセスできる複数のメモリが同じグループに属するようにグループIDが設定される。これにより、半導体装置100は、GIDタスクに要する時間がバラつくことを抑制できる。
(制御構造)
図7は、実施形態1に従う半導体装置100が処理領域を確保する処理を表すフローチャートである。図7に示される各処理は、CPU110がOS162又はアプリ161を実行することにより実現される。
図7は、実施形態1に従う半導体装置100が処理領域を確保する処理を表すフローチャートである。図7に示される各処理は、CPU110がOS162又はアプリ161を実行することにより実現される。
ある局面において、アプリ161は、タスクを実行するにあたりOS162に対して処理領域の確保命令(システムコール)を通知する。このとき、アプリ161は、タスクに設定されているID又はグループIDを含むシステムコールをOS162に通知する。OS162は、アプリ161からシステムコールを受け付けたことに応じて(ステップS310でYES)、ステップS710の処理を実行する。
ステップS710において、OS162は、IDを指定する処理領域の確保命令を受け付けたか、又はグループIDを指定する処理領域の確保命令を受け付けたかを判断する。OS162は、グループIDを指定する処理領域の確保命令を受け付けたと判断した場合(ステップS710でグループID)、ステップS715の処理を実行する。一方、OS162は、IDを指定する処理領域の確保命令を受け付けたと判断した場合(ステップS710でID)、ステップS320〜S340の処理を実行する。なお、ステップS320〜S340の処理は、上述の処理と同じであるため、繰り返し説明しない。
ステップS715において、OS162は、管理テーブル164を参照して、指定されたグループIDのグループに属する候補領域を特定する。OS162はさらに、管理テーブル164に保持される候補領域の使用状況に基づいて、特定された候補領域の中から1以上の処理領域を特定する(ステップS720〜S795)。
ステップS720において、OS162は、管理テーブル164の使用状況を参照して、特定された候補領域のうち空き容量が十分な候補領域が存在するか否かを判断する。例えば、OS162は、タスクを実行するのに必要な記憶領域の容量以上の空き容量を有する候補領域を、空き容量が十分な候補領域であると判断する。OS162は、空き容量が十分な候補領域が存在すると判断した場合に(ステップS720でYES)、ステップS730の処理を実行する。
OS162は、十分な空き容量を有する候補領域が存在しないと判断した場合(ステップS720でNO)、いずれかの候補領域が十分に空くまで待機する(ステップS740)。
なお、タスクによってはリアルタイム処理が求められるもの、つまり、待機できないものもある(例えば、モータ制御処理)。係る場合、OS162は、実行中の優先順位の低いタスクを一時的に停止することで、ステップS310で入力されたタスクによって使用される処理領域を確保してもよい。
ステップS730において、OS162は、ステップS720で特定した候補領域のうち、GIDタスクによって使用されていない候補領域が存在するか否かを判断する。例えば、OS162は、管理テーブル164の使用状況を参照して、ステップS720で特定した候補領域のうち、フラグ「1」のタスクによって使用されていない候補領域が存在するか否かを判断する。OS162は、GIDタスクによって使用されていない候補領域が存在すると判断した場合(ステップS730でYES)、ステップS750の処理を実行する。そうでない場合(ステップS730でNO)、OS162は、ステップS780の処理を実行する。
ステップS750において、OS162は、GIDタスクによって使用されていない候補領域のうち、IDタスクによって使用されていない候補領域が存在するか否かを判断する。換言すれば、OS162は、タスクによって全く使用されていない候補領域が存在するか否かを判断する。例えば、OS162は、管理テーブル164の使用状況を参照して、GIDタスクによって使用されていない候補領域のうち、フラグ「0」のタスクによって使用されていない候補領域が存在するか否かを判断する。OS162は、タスクによって全く使用されていない候補領域が存在すると判断した場合(ステップS750でYES)、当該候補領域の中から処理領域を確保する(ステップS760)。一方、OS162は、タスクによって全く使用されていない候補領域が存在しないと判断した場合(ステップS750でNO)、IDタスクによって使用されている数が最も少ない候補領域の中から処理領域を確保する(ステップS770)。OS162は、処理領域を確保した後に、管理テーブル164の使用状況に当該処理領域の情報を登録する。
ステップS780において、OS162は、ステップS720で特定した候補領域のうち、GIDタスクによって使用されている数が最も少ない複数の候補領域が存在するか否かを判断する。OS162は、GIDタスクによって使用されている数が最も少ない複数の候補領域が存在すると判断した場合(ステップS780でYES)、ステップS790の処理を実行する。そうでない場合(ステップS780でNO)、OS162はステップS795の処理を実行する。
ステップS790において、OS162は、ステップS780で特定した複数の候補領域のうち、IDタスクによって使用されている数が最も少ない候補領域から処理領域を確保する。ステップS795において、OS162は、ステップS780で特定した1の候補領域から処理領域を確保する。ステップS760、S770、S790、S795の後、OS162は、ステップS340の処理を実行する。
次に、図8を用いて具体例を説明する。図8は、ある局面に従う管理テーブル164の使用状況を表す図である。図8に示される使用状況の場合に、OS162にグループID「1」を指定する処理領域の確保命令が入力されたとする。この場合、OS162はまず、グループID「1」に対応するID「1」、「2」、「3」、および「6」の候補領域を特定する(ステップS715)。これらの候補領域はいずれも十分な空き容量を有しているものとする。続いて、OS162は、これらの候補領域はいずれもGIDタスク(フラグ「1」のタスク)によって使用中であると判断する(ステップS730でNO)。
OS162はさらに、特定した候補領域ごとにGIDタスクの数をカウントする。ID「1」の候補領域は2個のGIDタスクによって使用されており、ID「2」、「3」、および「6」の候補領域は1個のGIDタスクによって使用されている。そのため、OS162は、GIDタスクによって使用されている数が最も少ない候補領域としてID「2」、「3」、および「6」の候補領域を特定する(ステップS780でYES)。
次にOS162は、ID「2」、「3」、および「6」の候補領域のうち、IDタスクによって使用されていない候補領域として、ID「3」および「6」の候補領域を抽出する。OS162は、抽出した候補領域の中から1以上の処理領域を確保する(ステップS790)。
図9は、実施形態1に従うOS162のタスクスケジューリングを表す図である。図9において、タスク1〜3に対応するシステムコールがOS162に入力されるタイミング(時刻T1、T2、T4、T6)は、図4に示される例と同じであるとする。以下では、実施形態1に従うOS162のタスクスケジューリングと、図4で説明した関連技術に従うOS162Xのタスクスケジューリングとの相違点について説明する。
実施形態1に従うOS162は、時刻T4において、アプリ161からグループIDの指定を含むシステムコールを受け付ける。OS162は、指定されたグループID(グループ)に属する候補領域の中から、時刻T4においてGIDタスクおよびIDタスクによって使用されていないID「1」および「2」の候補領域(に属する処理領域)を確保する(ステップS760)。
これにより、実施形態1に従う半導体装置100は、図4に示される例において生じていたマスタ122および123によるタスクどうしの競合を抑制できる。その結果、タスク2に要する時間は、時刻T2〜時刻T5から時刻T2〜時刻T51に短縮される。また、タスク3に要する時間も、時刻T4〜時刻T7から時刻T4〜時刻T71に短縮される。
上記によれば、実施形態1に従う半導体装置100は、タスクに設定されるグループに属する候補領域の中から、他のタスクによって全く使用されていない又はあまり使用されていない候補領域を特定し、特定した候補領域の中から処理領域を確保する。そのため、半導体装置100は、タスクの終了タイミングの遅延を抑制し得る。
また、半導体装置100は、タスクの終了タイミングの遅延を抑制できるため、高度のリアルタイム処理を実現し得る。また、半導体装置100は、タスクに要する時間を抑制できるため、消費電力を削減し得る。
また、関連技術に従うアプリ161Xの開発者は複数のタスクが競合しないように意識しながらタスクにIDを設定しなければいけないが、実施形態1に従うアプリ161の開発者はタスクを実行するマスタに応じたグループIDをタスクに設定するだけでよい。
また、半導体装置100は、GIDタスクによって使用されていない候補領域から優先的に処理領域を確保するように構成されている。これにより、半導体装置100は、GIDタスク(処理時間の長いタスク)どうしが競合すること抑制できる。その結果、半導体装置100は、タスクの終了タイミングが大幅に遅延することを抑制できる。
[実施形態2]
実施形態1に従う半導体装置100は、候補領域と当該候補領域が属するグループとを利用して、タスクの競合を抑制するように構成されている。しかしながら、1つのメモリに複数の候補領域が設定されている場合、タスクどうしの競合が生じ得る。
実施形態1に従う半導体装置100は、候補領域と当該候補領域が属するグループとを利用して、タスクの競合を抑制するように構成されている。しかしながら、1つのメモリに複数の候補領域が設定されている場合、タスクどうしの競合が生じ得る。
図5を参照して、メモリ151には、ID「1」およびID「6」の候補領域が設定されている。例えばOS162は、ID「1」の候補領域がマスタ121によって使用されているにも関わらず、マスタ122用にID「6」の候補領域を確保する。この場合、マスタ121が実行するタスクと、マスタ122が実行するタスクとが競合してしまい、これらのタスクに要する時間が長くなってしまう。
実施形態2に従う半導体装置100Aは、メモリを識別する識別情報(以下、「スレーブID」とも言う)を利用することにより、上記の競合を抑制する。以下、その具体的な構成および制御について説明する。
(半導体装置100Aの構成)
図10は、実施形態2に従う半導体装置100Aの構成を表す図である。実施形態2に従う半導体装置100Aのハードウェア構成は、実施形態1に従う半導体装置100のハードウェア構成と同じである。ただし、実施形態2に従う記憶装置160に格納されるデータと、実施形態1に従う記憶装置160に格納されるデータとは相違する。具体的には、実施形態2に従う記憶装置160は、OS162および管理テーブル164に替えて、OS162Aおよび管理テーブル164Aを保持している。
図10は、実施形態2に従う半導体装置100Aの構成を表す図である。実施形態2に従う半導体装置100Aのハードウェア構成は、実施形態1に従う半導体装置100のハードウェア構成と同じである。ただし、実施形態2に従う記憶装置160に格納されるデータと、実施形態1に従う記憶装置160に格納されるデータとは相違する。具体的には、実施形態2に従う記憶装置160は、OS162および管理テーブル164に替えて、OS162Aおよび管理テーブル164Aを保持している。
(管理テーブル164A)
図11は、管理テーブル164Aのデータ構造の一例を表す。管理テーブル164Aは、実施形態1に従う管理テーブル164が保持するデータに加え、さらに複数のメモリ151〜155の各々を識別するスレーブIDを保持する。図10および図11の例において、スレーブID「1」はメモリ151を、スレーブID「2」はメモリ152を、スレーブID「3」はメモリ153を、スレーブID「4」はメモリ154を、スレーブID「5」はメモリ155をそれぞれ表す。図11の例において、ID「1」および「6」の候補領域はスレーブID「1」のメモリ151に属している。これにより、実施形態2に従う半導体装置100Aは、複数の候補領域が同じメモリに属していることを把握できる。
図11は、管理テーブル164Aのデータ構造の一例を表す。管理テーブル164Aは、実施形態1に従う管理テーブル164が保持するデータに加え、さらに複数のメモリ151〜155の各々を識別するスレーブIDを保持する。図10および図11の例において、スレーブID「1」はメモリ151を、スレーブID「2」はメモリ152を、スレーブID「3」はメモリ153を、スレーブID「4」はメモリ154を、スレーブID「5」はメモリ155をそれぞれ表す。図11の例において、ID「1」および「6」の候補領域はスレーブID「1」のメモリ151に属している。これにより、実施形態2に従う半導体装置100Aは、複数の候補領域が同じメモリに属していることを把握できる。
(制御構造)
図12は、実施形態2に従う半導体装置100Aが処理領域を確保する処理を表すフローチャートである。図12に示される各処理は、CPU110がOS162A又はアプリ161を実行することにより実現される。なお、図12に示される処理のうち上述の処理と同じ処理については同じ符号を付している。そのため、その処理についての説明は繰り返さない。
図12は、実施形態2に従う半導体装置100Aが処理領域を確保する処理を表すフローチャートである。図12に示される各処理は、CPU110がOS162A又はアプリ161を実行することにより実現される。なお、図12に示される処理のうち上述の処理と同じ処理については同じ符号を付している。そのため、その処理についての説明は繰り返さない。
OS162Aは、ステップS715で特定された候補領域のうち、十分な空き容量を有する候補領域が存在する場合(ステップS720でYES)、ステップS1210の処理を実行する。
ステップS1210において、OS162Aは、管理テーブル164Aを参照して、十分な空き容量を有する候補領域が属するメモリ(のスレーブID)を検出する。OS162Aはさらに、検出したメモリのうち、GIDタスクによって使用されていないメモリが存在するか否かを判断する。例えば、OS162Aは、管理テーブル164Aの使用状況を参照して、検出したメモリのうち、フラグ「1」のタスクによって使用されていないメモリが存在するか否かを判断する。OS162Aは、GIDタスクによって使用されていないメモリが存在すると判断した場合(ステップS1210でYES)、ステップS1220の処理を実行する。そうでない場合(ステップS1210でNO)、OS162Aは、ステップS1250の処理を実行する。
ステップS1220において、OS162Aは、GIDタスクによって使用されていないメモリのうち、IDタスクによって使用されていないメモリが存在するか否かを判断する。換言すれば、OS162は、タスクによって全く使用されていないメモリが存在するか否かを判断する。例えば、OS162Aは、管理テーブル164Aの使用状況を参照して、GIDタスクによって使用されていないメモリのうち、フラグ「0」のタスクによって使用されていないメモリが存在するか否かを判断する。OS162Aは、タスクによって全く使用されていないメモリが存在する場合(ステップS1220でYES)、当該メモリに属する候補領域から処理領域を確保する(ステップS1230)。一方、OS162Aは、タスクによって全く使用されていないメモリが存在しない場合(ステップS1220でNO)、IDタスクによって使用されている数が最も少ないメモリから処理領域を確保する(ステップS1240)。OS162Aは処理領域を確保した後、管理テーブル164Aの使用状況に当該処理領域の情報を登録する。
ステップS1250において、OS162Aは、ステップS1210で検出したメモリ(十分な空き容量を有する候補領域が属するメモリ)のうち、GIDタスクによって使用されている数が最も少ない複数のメモリが存在するか否かを判断する。OS162Aは、GIDタスクによって使用されている数が最も少ない複数の候補領域が存在すると判断した場合(ステップS1250でYES)、ステップS1260の処理を実行する。そうでない場合(ステップS1250でNO)、OS162AはステップS1270の処理を実行する。
ステップS1260において、OS162Aは、ステップS1250で特定した複数のメモリのうち、IDタスクによって使用されている数が最も少ないメモリに属する候補領域から処理領域を確保する。ステップS1270において、OS162Aは、ステップS1250で特定した1以上の候補領域から処理領域を確保する。ステップS1230、S1240、S1260、S1270の後、OS162Aは、ステップS340の処理を実行する。
次に、図13を用いて具体例を説明する。図13は、ある局面に従う管理テーブル164Aの使用状況を表す図である。なお、図13に示される使用状況と図8に示される使用状況とは同じである。図13に示される使用状況の場合に、OS162AにグループID「1」を指定する処理領域の確保命令が入力されたとする。この場合、OS162Aはまず、グループID「1」に対応するID「1」、「2」、「3」、および「6」の候補領域を特定する(ステップS715)。これらの候補領域はいずれも十分な空き容量を有するものとする。続いて、OS162Aは、これらの候補領域に対応するスレーブID「1」〜「3」のメモリ151〜153はいずれも、GIDタスク(フラグ「1」のタスク)によって使用中であると判断する(ステップS1210でNO)。
OS162Aはさらに、特定したメモリごとにGIDタスクの数をカウントする。スレーブID「1」のメモリ151は3個のGIDタスクによって使用されており、スレーブID「2」、「3」のメモリ152、153は1個のGIDタスクによって使用されている。そのため、OS162Aは、GIDタスクによって使用されている数が最も少ないメモリとしてスレーブID「2」、「3」のメモリ152、153を特定する(ステップS1250でYES)。
次にOS162Aは、スレーブID「2」、「3」のメモリ152、153のうち、IDタスクによって使用されていないメモリとして、スレーブID「3」のメモリ153を抽出し。OS162Aは、抽出したメモリ153から処理領域を確保する(ステップS1260)。
上記によれば、実施形態2に従う半導体装置100Aは、メモリを識別する情報(スレーブID)を利用することにより、実施形態1に従う半導体装置100に比してタスクどうしの競合をより抑制し得る。
(変形例1)
実施形態1に従う半導体装置100および実施形態2に従う半導体装置100Aは、バスブリッジを有さない簡易な構成であった。そこで、バスブリッジを有する半導体装置の構成についても説明する。
実施形態1に従う半導体装置100および実施形態2に従う半導体装置100Aは、バスブリッジを有さない簡易な構成であった。そこで、バスブリッジを有する半導体装置の構成についても説明する。
図14は、変形例1に従う半導体装置100Bの構成を説明する図である。半導体装置100Bは、実施形態2に従う半導体装置100Aに比べて、バスブリッジ170、マスタ124、バス134、135、マルチプレクサ146、147、メモリ156、157、およびバスアービタ174、175をさらに有する点において相違する。
バスブリッジ170は、各バス130〜133とバス134とを中継する。マスタ124は、バス135に接続されている。バス134および135の各々は、マルチプレクサ146および147に接続されている。マルチプレクサ146はメモリ156に、マルチプレクサ147はメモリ157にそれぞれ接続されている。バス134、135は、バスアービタ174、175にてそれぞれ制御されている。バスアービタ174、175は、各マスタ121〜124からのアクセス要求を識別しメモリ156およびメモリ157のいずれに対してアクセス要求を行うかを決定する。
各マルチプレクサ146、147は、バス134、135からのアクセス要求に基づいて、いずれかのバスと対応するメモリとを電気的に接続するようにバスを選択する。各マルチプレクサ146、147は、同時にバス134、135からアクセス要求を受け付けた場合には、マルチプレクサ内の優先順位に基づいて、いずれか一つのバスを選択しバスと対応するメモリとを電気的に接続する。各マルチプレクサ146、147は、選択しているバスのアクセスが完了した場合には、マルチプレクサ内の優先順位に基づいて次のバスを選択し、アクセス要求のあるバスを順次切り替えてバスと対応するメモリとを電気的に接続する。
当該構成によれば、マスタ121〜123はバスブリッジ170を介してメモリ156および157にアクセス可能であって、マスタ124はバスブリッジ170を介してメモリ151〜155にアクセス可能である。記憶装置160は、アプリ161Bと、実施形態2で説明したOS162Aと、管理テーブル164Bとを保持している。アプリ161Bを構成する各タスクには、上記説明したアプリ161と同様に、ID又はグループIDが設定されている。
CPU110を基準としてバスブリッジ170の前段を第1階層、バスブリッジ170の後段を第2階層としてそれぞれ定義する。この場合、第1階層に存在するマスタ121〜123は、同じ第1階層に存在するメモリ151〜155に速くアクセスできる。一方、マスタ121〜123が第2階層に存在するメモリ156および157にアクセスする場合、バスブリッジ170における遅延が生じる。
同様に、第2階層に存在するマスタ124は、同じ第2階層に存在する156および157に速くアクセスできるが、第1階層に存在するメモリ151〜155にアクセスしようとするとバスブリッジ170における遅延が生じる。
図15は、管理テーブル164Bのデータ構造の一例を表す。図14および図15に示される例において、グループID「1」のグループには、第1階層に存在するメモリ151〜155(スレーブID「1」〜「5」)が属する。また、グループID「3」のグループには、第2階層に属するメモリ156および157(スレーブID「6」および「7」)が属する。このように、ある局面において、各メモリに設定されるグループIDは、同じ階層に存在するメモリが属するように設定される。つまり、各メモリに設定されるグループIDは、マスタ(タスクの実行主体)からグループに属するメモリへのアクセス速度が等しくなるように設定される。また、グループID「2」のグループには、メモリ151〜157が属する。
ある局面において、アプリ161Bの開発者は、マスタ121〜123によって実行されるタスクにメモリ151〜155が属するグループのグループID「1」を設定する。また、開発者は、マスタ124によって実行されるタスクにメモリ156〜157が属するグループのグループID「3」を設定する。これにより、タスクの終了タイミングが遅延すること、およびタスクに要する時間がバラつくことが抑制されるためである。
また、タスクによってはリアルタイム性をあまり要求されないものもある。係る場合、アプリ161Bの開発者は、当該タスクに、メモリ151〜157が属するグループのグループID「2」を設定し得る。
なお、半導体装置100Bが処理領域を確保する制御構造は、上述した半導体装置100Aが処理領域を確保する制御構造と同じである。そのため、半導体装置100Bが処理領域を確保する制御構造は繰り返し説明しない。
(変形例2)
管理テーブル164Aは、各候補領域を識別するIDと、各メモリを識別するスレーブIDと、各グループを識別するグループIDと、の対応関係を保持するように構成されている。他の局面において、管理テーブルは、各メモリを識別するスレーブIDと、各メモリが属するグループを識別するグループIDとの対応関係を保持するように構成されてもよい。
管理テーブル164Aは、各候補領域を識別するIDと、各メモリを識別するスレーブIDと、各グループを識別するグループIDと、の対応関係を保持するように構成されている。他の局面において、管理テーブルは、各メモリを識別するスレーブIDと、各メモリが属するグループを識別するグループIDとの対応関係を保持するように構成されてもよい。
係る場合、各タスクには、スレーブIDおよびグループIDのいずれかが設定される。OSは、タスクごとに設定されるスレーブID又はグループIDを読み取る。OSは、タスクにスレーブIDが設定されている場合、当該スレーブIDに対応するメモリから処理領域を確保する。
一方、OSは、タスクにグループIDが設定されている場合、当該グループIDのグループに属するスレーブIDのメモリを特定し、空き容量が十分なメモリをさらに特定する。その後、OSは、「IDタスク」を「スレーブIDを指定するタスク」と読み替えて上記説明したS1210〜S1270の処理を実行することにより、処理領域を確保する。
上記によれば、変形例2に従う半導体装置は、管理テーブル164Aに比して管理テーブルを記憶するために必要な容量を削減できる。
[実施形態3]
実施形態3に従う半導体装置100Cは、メモリを識別するスレーブIDと、メモリが属するグループを識別するグループIDとの対応関係に基づいて、処理領域を確保する。
実施形態3に従う半導体装置100Cは、メモリを識別するスレーブIDと、メモリが属するグループを識別するグループIDとの対応関係に基づいて、処理領域を確保する。
(半導体装置100Cの構成)
図16は、実施形態3に従う半導体装置100Cの構成を表す図である。実施形態3に従う半導体装置100Cのハードウェア構成は、実施形態2に従う半導体装置100のハードウェア構成と同じである。ただし、実施形態3に従う記憶装置160に格納されるデータと、実施形態2に従う記憶装置160に格納されるデータとは相違する。具体的には、実施形態3に従う記憶装置160は、アプリ161A、OS162A、および管理テーブル164Aに替えて、アプリ161C、OS162Cおよび管理テーブル164Cを保持している。
図16は、実施形態3に従う半導体装置100Cの構成を表す図である。実施形態3に従う半導体装置100Cのハードウェア構成は、実施形態2に従う半導体装置100のハードウェア構成と同じである。ただし、実施形態3に従う記憶装置160に格納されるデータと、実施形態2に従う記憶装置160に格納されるデータとは相違する。具体的には、実施形態3に従う記憶装置160は、アプリ161A、OS162A、および管理テーブル164Aに替えて、アプリ161C、OS162Cおよび管理テーブル164Cを保持している。
(管理テーブル164C)
図17は、管理テーブル164Cのデータ構造の一例を表す。管理テーブル164Cは、各メモリ151〜155を識別するスレーブIDと、各メモリ151〜155が属するグループを識別するグループIDと、各メモリ151〜155における候補領域のアドレスと、各メモリ151〜155の使用状況と、の対応関係を記憶している。
図17は、管理テーブル164Cのデータ構造の一例を表す。管理テーブル164Cは、各メモリ151〜155を識別するスレーブIDと、各メモリ151〜155が属するグループを識別するグループIDと、各メモリ151〜155における候補領域のアドレスと、各メモリ151〜155の使用状況と、の対応関係を記憶している。
アプリ161Cを構成する各タスクは、グループIDが設定されており、スレーブIDは設定されていない。そのため、管理テーブル164Cは、タスクがスレーブIDを設定されているか又はグループIDを設定されているかを判別するフラグを保持していない。
(制御構造)
図18は、実施形態3に従う半導体装置100Cが処理領域を確保する処理を表すフローチャートである。図18に示される各処理は、CPU110がOS162C又はアプリ161Cを実行することにより実現される。
図18は、実施形態3に従う半導体装置100Cが処理領域を確保する処理を表すフローチャートである。図18に示される各処理は、CPU110がOS162C又はアプリ161Cを実行することにより実現される。
OS162Cは、アプリ161CからグループIDを指定する処理領域の確保命令(システムコール)を受け付けたことに基づいて(ステップS1810でYES)、ステップS1815の処理を実行する。
ステップS1815において、OS162Cは、管理テーブル164Cを参照して、指定されたグループIDに属するメモリを特定する。
ステップS1820において、OS162Cは、指定されたグループIDにより特定されるグループに属するメモリの候補領域が十分な空き容量を有しているか否かを判断する。より具体的には、OS162Cは、管理テーブル164Cに保持される各メモリの使用状況のうち、指定されたグループIDに属するメモリの使用状況に基づいて上記判断を行なう。なお、メモリが十分な空き容量を有しているか否かの判断方法は、ステップS720の方法と同じであるため、繰り返し説明しない。
OS162Cは、特定されたメモリの候補領域が十分な空き容量を有している場合(ステップS1820でYES)、ステップS1830の処理を実行する。そうでない場合(ステップS1820でNO)、OS162Cは、特定されたメモリが十分な空き容量を有するまで待機する(ステップS1840)。
ステップS1830において、OS162Cは、十分な空き容量を有する候補領域が属するメモリのうち、タスク(GIDタスク)によって使用されていないメモリが存在するか否かを判断する。OS162Cは、タスクによって使用されていないメモリが存在する場合(ステップS1830でYES)、当該メモリに属する候補領域から処理領域を確保する(ステップS1850)。一方、OS162Cは、タスクによって使用されていないメモリが存在しない場合(ステップS1830でNO)、タスクによって使用されている数が最も少ないメモリに属する候補領域から処理領域を確保する(ステップS1860)。OS162Cは、処理領域を確保した後に、管理テーブル164Cの使用状況に当該処理領域の情報を登録する。
ステップS1870において、OS162Cは、確保した処理領域にアクセスするための情報として当該処理領域のアドレスを、アプリ161Cを介してシステムコールに対応するマスタに出力する。
上記によれば、実施形態3に従う半導体装置100Cは、グループに属するメモリの中から、他のタスクによって全く使用されていない又はあまり使用されていないメモリを特定し、特定したメモリ(に属する候補領域)から処理領域を確保する。そのため、半導体装置100Cは、タスクどうしの競合を抑制し得る。
また、実施形態3に従う管理テーブル164Cは、各候補領域を識別するID、およびフラグを有していない。そのため、管理テーブル164Cを記憶するために必要な記憶容量は、実施形態1および2に従う管理テーブルを記憶するために必要な記憶容量よりも小さい。
また、半導体装置100Cは、同一グループに属する複数のメモリの使用率が偏らないように制御できる。これにより、半導体装置100Cは、複数のタスクが競合することを抑制し得る。
なお、他の局面において、管理テーブル164Cは、候補領域のアドレスを保持しなくともよい。係る場合、OS162Cは、1つのメモリの全記憶領域を候補領域として扱う。
[構成]
以上に開示された技術的特徴は、以下のように要約され得る。
以上に開示された技術的特徴は、以下のように要約され得る。
(構成1) ある実施形態に従うと、半導体装置は、複数のマスタ121〜123と、複数のバス131〜133とを備える。各バスは各マスタにそれぞれ接続されている。半導体装置は、複数のメモリ151〜155をさらに備える。各メモリは、複数のバスの少なくともいずれかに接続されている。各メモリは、少なくとも1以上の候補領域を含む。半導体装置は、各マスタから当該マスタに接続されているバスを介した複数のメモリのいずれかへのアクセスを制御するためのCPU110と、各候補領域を識別するIDと候補領域が属するグループを識別するグループIDとの対応関係を保持する管理テーブル164を記憶するための記憶装置160とをさらに備える。CPU110はOS162を実行することにより、以下の処理を実行する。CPU110は、各候補領域の使用状況を検出する。CPU110は、複数のマスタのいずれかによって使用される処理領域を複数の候補領域のいずれかから確保する命令(システムコール)がグループIDを含むことに基づいて(ステップS710でYES)、管理テーブル164を参照して、複数の候補領域の中から指定されたグループに属する1以上の候補領域を特定する(ステップS715)。CPU110は、検出された使用状況に基づいて、特定された1以上の候補領域の中から処理領域を確保する(ステップS720〜S795)。CPU110は、確保された処理領域にアクセスするための情報として、当該処理領域のアドレスを、命令の通知元のアプリ161を介して、命令に対応するマスタ(タスクを実行するマスタ)に出力する(ステップS340)。
(構成2) (構成1)に従うCPU110は、使用状況として、各候補領域について、IDタスクによって使用されているか否か、およびグループタスクによって使用されているか否か検出する(図6)。CPU110は、検出された使用状況に基づいて処理領域を確保する場合に、特定された1以上の候補領域の中から、GIDタスクによって使用されていない候補領域を絞り込み(ステップS730でYES)、絞り込んだ候補領域の中から処理領域を確保するように構成される(ステップS750〜S770)。
(構成3) (構成1)に従うCPU110は、使用状況として、各候補領域について、IDタスクによって使用されているか否か、およびグループタスクによって使用されているか否か検出する(図6)。CPU110は、検出された使用状況に基づいて処理領域を確保する場合に、特定された1以上の候補領域の中から、GIDタスクおよびIDタスクによって使用されていない候補領域を絞り込み(ステップS750でYES)、絞り込んだ候補領域の中から処理領域を確保するように構成される(ステップS760)。
(構成4) (構成2)に従うCPU110は、絞り込んだ1以上の候補領域が全てIDタスクによって使用されている場合(ステップS750でNO)、当該1以上の候補領域の中からIDタスクによって使用されている数が最も少ない候補領域を特定し、当該特定した特定された1以上の候補領域の中から処理領域を確保するように構成される(ステップS770)。
(構成5) (構成2)に従うCPU110は、特定された1以上の候補領域の中にGIDタスクによって使用されていない候補領域が存在しない場合(ステップS730でNO)に、特定された1以上の候補領域の中から、GIDタスクによって使用されている数が最も少ない候補領域を絞り込み、絞り込んだ候補領域の中から処理領域を確保するように構成される(ステップS795)。
(構成6) (構成5)に従うCPU110は、GIDタスクによって使用されている数が最も少ない複数の候補領域が存在する場合に(ステップS780でYES)、当該複数の候補領域の中から、IDタスクによって使用されている数が最も少ない候補領域を絞り込み、絞り込んだ候補領域の中から処理領域を確保するように構成される(ステップS790)。
(構成7) (構成1)〜(構成6)において、候補領域を識別するIDに替えて、各メモリ151〜155を識別するスレーブIDを用いてもよい。
(構成8) (構成1)に従う記憶装置160は、各候補領域を識別するIDと、候補領域が属するグループを識別するグループIDと、各メモリを識別するスレーブIDとの対応関係を保持する管理テーブル164Aを記憶している。CPU110は、管理テーブル164Aを参照して、各候補領域の使用状況と、当該候補領域が属するメモリとに基づいて、各メモリの使用状況を検出する。CPU110は、各メモリの使用状況に基づいて、特定された1以上の候補領域の中から処理領域を確保するように構成される(ステップS1210〜1270)。例えば、CPU110は、十分に空いている候補領域が属するメモリを検出し、当該メモリの中からGIDタスクによって使用されていないメモリを特定し、当該メモリに属する候補領域から処理領域を確保する(ステップS1210〜S1240)。また、CPU110は、GIDタスクによって使用されていないメモリが存在しない場合(ステップS1210でNO)、GIDタスクによって使用されている数が最も少ないメモリに属する候補領域から処理領域を確保する(ステップS1250〜S1270)。
(構成9) 他の実施形態に従うと、半導体装置100Cは、複数のマスタ121〜123と、複数のバス131〜133とを備える。各バスは各マスタにそれぞれ接続されている。半導体装置100Cは、複数のメモリ151〜155をさらに備える。各メモリは複数のバスの少なくともいずれかに接続されている。半導体装置100Cは、各マスタから当該マスタに接続されているバスを介した複数のメモリのいずれかへのアクセスを制御するためのCPU110と、各メモリを識別するIDと、各候補領域が属するグループを識別するグループIDとの対応関係を保持する管理テーブル164Cを記憶するための記憶装置160とをさらに備える。CPU110は、OS162Cを実行することにより以下の処理を実行する。CPU110は、各メモリの使用状況を検出する。CPU110は、複数のマスタのいずれかによって使用される処理領域を複数のメモリのいずれかから確保する命令(システムコール)がグループIDを含むことに基づいて(ステップS1810でYES)、管理テーブル164Cを参照して、複数のメモリの中から指定されたグループに属する1以上のメモリを特定する(ステップS1815)。CPU110は、検出された使用状況に基づいて、特定された1以上のメモリの中から処理領域を確保し(ステップS1820〜S1860)、確保された処理領域にアクセスするための情報として当該処理領域のアドレスを、命令の通知元のアプリ161Cを介して、命令に対応するマスタ(タスクを実行するマスタ)に出力する(ステップS1870)。
(構成10) 他の局面に従うと、マルチレイヤバス構成を採用する半導体装置のCPU110によって実行されるプログラム(OS)が提供される。半導体装置は、複数のマスタ121〜123と複数のメモリ151〜155とを備える。各メモリは、少なくとも1以上の候補領域を含む。半導体装置は、各候補領域を識別するIDと候補領域が属するグループを識別するグループIDとの対応関係を保持する管理テーブル164を記憶するための記憶装置160をさらに備える。プログラムはCPU110に、各メモリの使用状況を検出するステップと、複数のマスタのいずれかによって使用される処理領域を複数の候補領域のいずれかから確保する命令がグループの指定を含む場合に(ステップS710でYES)、管理テーブル164を参照して、複数の候補領域の中から指定されたグループに属する1以上の候補領域を特定するステップと(ステップS715)、検出された使用状況に基づいて、特定された1以上の候補領域の中から処理領域を確保するステップ(ステップS720〜S795)とを実行させる。
上記説明した各種処理は、1つのCPU110によって実現されるものとしてあるが、これに限られない。これらの各種機能は、少なくとも1つのプロセッサのような半導体集積回路、少なくとも1つの特定用途向け集積回路ASIC(Application Specific Integrated Circuit)、少なくとも1つのDSP(Digital Signal Processor)、少なくとも1つのFPGA(Field Programmable Gate Array)、および/又はその他の演算機能を有する回路によって実装され得る。
これらの回路は、有形の読取可能な少なくとも1つの媒体から、1以上の命令を読み出すことにより上記の各種処理を実行しうる。
このような媒体は、磁気媒体(たとえば、ハードディスク)、光学媒体(例えば、コンパクトディスク(CD)、DVD)、揮発性メモリ、不揮発性メモリの任意のタイプのメモリなどの形態をとるが、これらの形態に限定されるものではない。
揮発性メモリはDRAM(Dynamic Random Access Memory)およびSRAM(Static Random Access Memory)を含み得る。不揮発性メモリは、ROM、NVRAMを含み得る。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
100,100A,100B,100C,100X 半導体装置、110 制御装置、121,122,123,124 マスタ、130,131,132,133,134,135 バス、141,145,146,147 マルチプレクサ、151,152,153,154,155,156,157 メモリ、160 記憶装置、161,161A,161B,161C,161X アプリ、162X 制御プログラム、164,164A,164B,164C,164X 管理テーブル、170 バスブリッジ。
Claims (10)
- 複数のバスマスタと、
複数のバスとを備え、各前記バスは各前記バスマスタにそれぞれ接続されており、
複数のメモリをさらに備え、各前記メモリは、
前記複数のバスの少なくともいずれかに接続されており、
少なくとも1以上の記憶領域を含み、
各前記バスマスタから、当該バスマスタに接続されている前記バスを介した前記複数のメモリのいずれかへのアクセスを制御するための制御装置と、
各前記記憶領域を識別する識別情報と当該記憶領域が属するグループとの対応関係を記憶するための記憶装置とをさらに備え、
前記制御装置は、
各前記記憶領域の使用状況を検出し、
前記複数のバスマスタのいずれかによって使用される記憶領域を前記複数の記憶領域のいずれかから確保する命令に基づいて、前記対応関係から前記命令で指定されたグループと前記識別情報との対応関係を参照して、前記複数の記憶領域の中から前記指定されたグループに属する1以上の記憶領域を特定し、
前記検出された使用状況に基づいて、前記特定された1以上の記憶領域の中から前記使用される記憶領域を確保し、
前記確保された記憶領域にアクセスするための情報を前記命令に対応する前記バスマスタに出力する、半導体装置。 - 前記制御装置は、
前記使用状況として、複数の前記記憶領域の各々について、前記識別情報を指定する処理によって使用されているか否か、および前記グループを指定する処理によって使用されているか否か検出し、
前記検出された使用状況に基づいて前記使用される記憶領域を確保する場合に、前記特定された1以上の記憶領域の中から、前記グループを指定する処理によって使用されていない記憶領域を抽出し、前記抽出した記憶領域の中から前記使用される記憶領域を確保するように構成される、請求項1に記載の半導体装置。 - 前記制御装置は、
前記使用状況として、複数の前記記憶領域の各々について、前記識別情報を指定する処理によって使用されているか否か、および前記グループを指定する処理によって使用されているか否か検出し、
前記検出された使用状況に基づいて前記使用される記憶領域を確保する場合に、前記特定された1以上の記憶領域の中から、前記グループを指定する処理および前記識別情報を指定する処理によって使用されていない記憶領域を抽出し、前記抽出した記憶領域の中から前記使用される記憶領域を確保するように構成される、請求項1に記載の半導体装置。 - 前記制御装置は、前記抽出した1以上の記憶領域が全て前記識別情報を指定する処理によって使用されている場合、当該1以上の記憶領域の中から前記識別情報を指定する処理によって使用されている数が最も少ない記憶領域を特定し、当該特定した記憶領域の中から前記使用される記憶領域を確保するように構成される、請求項2に記載の半導体装置。
- 前記制御装置は、前記特定された1以上の記憶領域の中に前記グループを指定する処理によって使用されていない記憶領域が存在しない場合に、前記特定された1以上の記憶領域の中から、前記グループを指定する処理によって使用されている数が最も少ない記憶領域を抽出し、前記抽出した記憶領域の中から前記使用される記憶領域を確保するように構成される、請求項2に記載の半導体装置。
- 前記制御装置は、前記グループを指定する処理によって使用されている数が最も少ない複数の記憶領域が存在する場合に、当該複数の記憶領域の中から、前記識別情報を指定する処理によって使用されている数が最も少ない記憶領域を抽出し、前記抽出した記憶領域の中から前記使用される記憶領域を確保するように構成される、請求項5に記載の半導体装置。
- 前記識別情報は、各前記メモリを識別する情報を含む、請求項1に記載の半導体装置。
- 前記記憶装置は、各前記記憶領域を識別する識別情報と、当該記憶領域が属するグループと、各前記メモリを識別する識別情報との対応関係を記憶しており、
前記制御装置は、前記検出された使用状況に基づいて前記使用される記憶領域を確保する場合に、前記検出された使用状況と前記対応関係とから検出される各前記メモリの使用状況に基づいて、前記特定された1以上の記憶領域の中から前記使用される記憶領域を確保するように構成される、請求項1に記載の半導体装置。 - 複数のバスマスタと、
複数のバスとを備え、各前記バスは各前記バスマスタにそれぞれ接続されており、
複数のメモリをさらに備え、各前記メモリは前記複数のバスの少なくともいずれかに接続されており、
各前記バスマスタから、当該バスマスタに接続されている前記バスを介した前記複数のメモリのいずれかへのアクセスを制御するための制御装置と、
各前記メモリを識別する識別情報と、各前記メモリが属するグループとの対応関係を記憶するための記憶装置とをさらに備え、
前記制御装置は、
各前記メモリの使用状況を検出し、
前記複数のバスマスタのいずれかによって使用される記憶領域を前記複数のメモリのいずれかから確保する命令に基づいて、前記対応関係から前記命令で指定されたグループと前記識別情報との対応関係を参照して、前記複数のメモリの中から前記指定されたグループに属する1以上のメモリを特定し、
前記検出された使用状況に基づいて、前記特定された1以上のメモリの中から前記使用される記憶領域を確保し、
前記確保された記憶領域にアクセスするための情報を前記命令に対応する前記バスマスタに出力する、半導体装置。 - マルチレイヤバス構成を採用する半導体装置の制御装置によって実行されるプログラムであって、
前記半導体装置は、複数のバスマスタと複数のメモリとを備え、
各前記メモリは、少なくとも1以上の記憶領域を含み、
前記半導体装置は、各前記記憶領域を識別する識別情報と当該記憶領域が属するグループとの対応関係を記憶するための記憶装置をさらに備え、
前記プログラムは前記制御装置に、
各前記記憶領域の使用状況を検出するステップと、
前記複数のバスマスタのいずれかによって使用される記憶領域を前記複数の記憶領域のいずれかから確保する命令に基づいて、前記対応関係から前記命令で指定されたグループと前記識別情報との対応関係を参照して、前記複数の記憶領域の中から前記指定されたグループに属する1以上の記憶領域を特定するステップと、
前記検出された使用状況に基づいて、前記特定された1以上の記憶領域の中から前記使用される記憶領域を確保するステップとを実行させる、プログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017180447A JP2019057071A (ja) | 2017-09-20 | 2017-09-20 | 半導体装置および当該半導体装置において用いられるプログラム |
EP18187901.6A EP3460671B1 (en) | 2017-09-20 | 2018-08-08 | Semiconductor device and program used in the semiconductor device |
US16/059,792 US10534707B2 (en) | 2017-09-20 | 2018-08-09 | Semiconductor device including plurality of bus masters and control device and program used in the semiconductor device |
CN201811060754.0A CN109597770B (zh) | 2017-09-20 | 2018-09-12 | 半导体装置和半导体装置中使用的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017180447A JP2019057071A (ja) | 2017-09-20 | 2017-09-20 | 半導体装置および当該半導体装置において用いられるプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019057071A true JP2019057071A (ja) | 2019-04-11 |
Family
ID=63174039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017180447A Pending JP2019057071A (ja) | 2017-09-20 | 2017-09-20 | 半導体装置および当該半導体装置において用いられるプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US10534707B2 (ja) |
EP (1) | EP3460671B1 (ja) |
JP (1) | JP2019057071A (ja) |
CN (1) | CN109597770B (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10228413A (ja) | 1997-02-17 | 1998-08-25 | Ge Yokogawa Medical Syst Ltd | メモリアクセス制御方法および装置並びにメモリシステム |
US20050018290A1 (en) * | 2001-04-05 | 2005-01-27 | Ferenc Kiss | Colour filter means having optical activity under the influence of a polarized light |
KR101022473B1 (ko) * | 2004-02-13 | 2011-03-15 | 삼성전자주식회사 | 다층 버스 시스템에서의 메모리 뱅크 인터리빙 방법 및장치 |
JP2006079394A (ja) * | 2004-09-10 | 2006-03-23 | Renesas Technology Corp | データ処理装置 |
CN102127440A (zh) * | 2004-12-21 | 2011-07-20 | 日立金属株式会社 | 荧光材料及其制造方法,使用荧光材料的放射线检测器,与x射线ct装置 |
JP2007219678A (ja) * | 2006-02-15 | 2007-08-30 | Oki Electric Ind Co Ltd | マルチレイヤバス・システム |
JP6479608B2 (ja) * | 2015-08-28 | 2019-03-06 | 東芝メモリ株式会社 | メモリ装置およびメモリ制御方法 |
JP6504984B2 (ja) * | 2015-09-28 | 2019-04-24 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
-
2017
- 2017-09-20 JP JP2017180447A patent/JP2019057071A/ja active Pending
-
2018
- 2018-08-08 EP EP18187901.6A patent/EP3460671B1/en active Active
- 2018-08-09 US US16/059,792 patent/US10534707B2/en active Active
- 2018-09-12 CN CN201811060754.0A patent/CN109597770B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US10534707B2 (en) | 2020-01-14 |
CN109597770A (zh) | 2019-04-09 |
EP3460671B1 (en) | 2020-12-02 |
CN109597770B (zh) | 2023-12-08 |
EP3460671A1 (en) | 2019-03-27 |
US20190087329A1 (en) | 2019-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI537831B (zh) | 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法 | |
US9639409B2 (en) | Device and method for communicating between cores | |
US10198365B2 (en) | Information processing system, method and medium | |
US20240143392A1 (en) | Task scheduling method, chip, and electronic device | |
CN117377943A (zh) | 存算一体化并行处理系统和方法 | |
JP2014178981A (ja) | フォールトトレラントサーバ | |
KR100781358B1 (ko) | 데이터 처리 시스템 및 그의 데이터 처리방법 | |
JP2006085428A (ja) | 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム | |
JP2016024578A (ja) | 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム | |
JP2019057071A (ja) | 半導体装置および当該半導体装置において用いられるプログラム | |
KR100872196B1 (ko) | 메모리 시스템 및 듀얼 포트 메모리의 접근 제어 방법 | |
JP6183049B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20140281343A1 (en) | Information processing apparatus, program, and memory area allocation method | |
US20140052941A1 (en) | Calculation processing device and control method for calculation processing device | |
US20180113772A1 (en) | Information processing apparatus, method of controlling the same, and storage medium | |
JP2010092101A (ja) | 情報処理装置 | |
JP6206524B2 (ja) | データ転送装置、データ転送方法、プログラム | |
JP6364827B2 (ja) | 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム | |
JPWO2018003244A1 (ja) | メモリコントローラ、メモリシステムおよび情報処理システム | |
JP2015014962A (ja) | 演算装置、演算方法、及びプログラム | |
JP2019179414A (ja) | 情報処理装置 | |
JP7003752B2 (ja) | データ転送装置、データ転送方法、プログラム | |
JP6992616B2 (ja) | データ転送装置、データ転送方法、プログラム | |
CN112579481B (zh) | 数据处理方法、数据处理装置和计算装置 | |
JP7078380B2 (ja) | 命令制御装置、命令制御方法およびプログラム |