(57)【要約】【課題】  複数のタスクがそれぞれ特定の記憶領域に並行して任意の情報を出力することが可能な情報処理装置等を提供する。【解決手段】  情報処理装置（８００）は、１以上のタスク（８０３）を実行可能な複数の演算処理部（８０１）と、上記演算処理部に関連付けされ、当該演算処理部において実行される上記タスクから出力される情報を保持する第１の記憶部である専用メモリ領域（８０２）と、１以上の上記タスクを上記演算処理部に割り当てる演算処理割り当て管理部（８０７）と、１以上の上記タスクの内、特定の上記タスクが通知した上記専用メモリ領域に対するアクセス要求を受け付け、上記演算処理割り当て管理部に対して当該特定の上記タスクを実行している上記演算処理部の占有を要求すると共に、当該演算処理部に関連付けされた上記専用メモリ領域に対する上記アクセス要求を処理する、リソースアクセス部（８０４）と、を有する。【選択図】  図８
2015170270.tif 000002
【特許請求の範囲】
【請求項１】
１以上のタスクを実行可能な複数の演算処理手段と、
前記演算処理手段に関連付けされ、当該演算処理手段において実行される前記タスクから出力される情報を保持する第１の記憶手段である専用メモリ領域と、
前記タスクを前記演算処理手段に割り当てる演算処理割り当て管理手段と、
１以上の前記タスクの内、特定タスクが通知した前記専用メモリ領域に対するアクセス要求を受け付け、前記演算処理割り当て管理手段に対して前記特定タスクを実行している前記演算処理手段の占有を要求すると共に、当該演算処理手段に関連付けされた前記専用メモリ領域に対する前記アクセス要求を処理する、リソースアクセス手段と、を有することを特徴とする、
情報処理装置。
【請求項２】
前記アクセス要求は、前記タスクから前記専用メモリ領域に対して任意の情報を出力することを要求する要求であることを特徴とする、
請求項１に記載の情報処理装置。
【請求項３】
前記リソースアクセス手段が、前記特定タスクからの前記専用メモリ領域に対するアクセス要求に応じて、前記演算処理割り当て管理手段に対して前記特定タスクを実行している特定の前記演算処理手段の占有を要求した場合に、
前記演算処理割り当て管理手段は、前記要求に応じて、当該特定の前記演算処理手段に対して、前記特性タスクとは異なる他のタスクの処理を割り当てないことを特徴とする、
請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記リソースアクセス手段は、
前記特定タスクからの前記専用メモリ領域に対するアクセス要求を受け付けた場合において、当該アクセス要求において要求されたサイズのメモリ領域を、当該前記専用メモリ領域が提供できない場合に、
前記演算処理割り当て管理手段に対して、当該アクセス要求を通知した前記特定タスクを、前記特定タスクを実行している前記演算処理手段とは異なる前記演算処理手段へ割り当てることを要求することを特徴とする
請求項１乃至請求項３のいずれかに記載の情報処理装置。
【請求項５】
前記専用メモリ領域に保持された情報を保持可能な第２の記憶手段と、
前記リソースアクセス手段からの要求に応じて、前記専用メモリ領域に保持された情報を前記第２の記憶手段に出力すると共に、前記専用メモリ領域において当該出力した情報に関連する領域を初期化する第２記憶出力手段と、を更に有することを特徴とする、
請求項１乃至請求項４のいずれかに記載の情報処理装置。
【請求項６】
前記リソースアクセス手段は、
前記特定タスクからの前記専用メモリ領域に対するアクセス要求を受け付けた場合において、前記第２記憶出力手段が、当該専用メモリ領域に保持された情報を前記第２の記憶手段に出力する処理を実行している場合に、
前記演算処理割り当て管理手段に対して、当該アクセス要求を通知した前記特定タスクを、前記特定タスクを実行している前記演算処理手段とは異なる前記演算処理手段に割り当てることを要求することを特徴とする、
請求項５に記載の情報処理装置。
【請求項７】
前記リソースアクセス手段は、
特定の前記専用メモリ領域における空き領域のサイズを確認し、所定の基準に基づいて当該確認した空き領域のサイズが小さいと判断した場合に、
前記第２記憶出力手段に対して、当該特定の前記専用メモリ領域が保持する情報を、前記第２の記憶手段に出力することを要求することを特徴とする、
請求項５に記載の情報処理装置。
【請求項８】
前記記憶手段における専用メモリ領域には、当該専用メモリ領域が関連付けされた前記演算処理手段において実行される前記タスク、または、前記第２記憶出力手段のみがアクセス可能であることを特徴とする、
請求項１乃至請求項７の何れかに記載の情報処理装置。
【請求項９】
１以上のタスクを実行可能な複数の演算処理手段と、前記演算処理手段に関連付けされ、当該演算処理手段において実行される前記タスクから出力される情報を保持する第１の記憶手段である専用メモリ領域と、を有する情報処理装置が、
１以上の前記タスクを前記演算処理手段に割り当てる演算処理割り当て管理手段に対して、１以上の前記タスクの内、特定の前記タスクが通知した前記専用メモリ領域に対するアクセス要求を受け付けた場合に、当該特定の前記タスクを実行している前記演算処理手段の占有を要求し、
当該演算処理手段に関連付けされた前記専用メモリ領域に対する前記アクセス要求を処理する、ことを特徴とする、
情報処理装置におけるリソースアクセス方法。
【請求項１０】
１以上のタスクを実行可能な複数の演算処理手段と、前記演算処理手段に関連付けされ、当該演算処理手段において実行される前記タスクから出力される情報を保持する第１の記憶手段である専用メモリ領域と、を有するコンピュータに、
１以上の前記タスクを前記演算処理手段に割り当てる演算処理割り当て管理手段に対して、１以上の前記タスクの内、特定の前記タスクが通知した前記専用メモリ領域に対するアクセス要求を受け付けた場合に、当該特定の前記タスクを実行している前記演算処理手段の占有を要求する処理と、
当該演算処理手段に関連付けされた前記専用メモリ領域に対する前記アクセス要求を実行する処理と、を実行させることを特徴とする、
情報処理装置におけるリソースアクセスプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアを有する情報処理装置において、各プロセッサコアによって実行される多数のタスクが並行して特定のリソースにアクセスすることを可能とする技術に関する。
【背景技術】
【０００２】
近年、演算処理装置であるプロセッサコア（以下、単に「コア」と称する場合がある）を複数有するコンピュータ等の情報処理装置（以下、「マルチコアシステム」と称する場合がある）が普及している。
【０００３】
このようなマルチコアシステムにおいて動作するプロセスやスレッド（以下これらをまとめて「タスク」と称する場合がある）は、当該タスクの処理に関連した各種情報を高速に出力するために、メモリ等の主記憶装置（以下「メモリ領域」と称する場合がある）を一時的な出力領域として使用することがある。この場合、例えば、係るタスクからメモリ領域に出力された各種データは、別のタスク等により、ハードディスク等の２次記憶装置に設けられたデータベースシステムやファイルシステム等に格納されることがある。
【０００４】
係るマルチコアシステムにおいて、複数のタスクを並行して処理可能なマルチタスク・オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が稼働する場合、係るＯＳのスケジューラは、特定の瞬間において、１つのコアが１つのタスクのみを実行するよう制御する。即ち、１つのコアは、特定の瞬間において、同時に２つ以上のタスクを処理しないように制限される。
【０００５】
上記したようなマルチコアシステムにおいては、複数のタスクが異なるコアにより同時に実行される場合がある。よって、それぞれのタスクが共有する各種資源（以下「リソース」と称する場合がある）にアクセスする際には、当該リソースに対する排他制御が必要となる場合がある。
【０００６】
より具体的には、例えば、複数のタスクが特定のメモリ領域に各種情報を出力する場合には、それぞれのタスクの出力処理が競合する可能性を考慮した排他制御を、当該タスク自身に組み込む必要がある。
【０００７】
共有リソースに対する排他制御を実装した場合、特定のタスクが係るリソースを占有している間、他のリソースか係るリソースにアクセスできないため、全体として処理性能（以下「スループット」と称する場合がある）が低下する場合がある。また、係る排他制御処理に関連して発生する処理のオーバーヘッドも、処理性能が低下する要因となる。
【０００８】
より具体的には、例えば、多数のタスクが並行して動作する際に、個々のタスクが動作ログを特定のメモリ領域に出力する場合など、複数のタスクが特定少数の共有領域に情報を出力する場合にはタスク間において排他制御が必要となる場合がある。これは、システム全体としての処理性能が低下する原因となる。
【０００９】
上記したような排他制御に伴う処理性能の低下を回避するため、例えば、個別のタスク毎に専用のメモリ領域を用意する方法が考えられる。しかし、この場合、各タスクが出力しうる情報の最大サイズを見積り、それらを合計したサイズを基準としてメモリ領域を用意しなければならず、膨大なサイズのメモリが必要となる場合がある。
【００１０】
また、用意可能なメモリ領域のサイズが限られている場合、係るメモリ領域をタスク毎に分割して各タスクに割り当てると、タスクによっては必要なサイズのメモリ領域を確保できないため、係るメモリ領域が有効活用されない場合がある。
【００１１】
すなわち、複数のコアにおいて異なるタスクが並行して実行されるシステムにおいては、それぞれのタスクからリソースへのアクセスを効率的の処理可能な技術が求められている。
【００１２】
上記したような複数のタスクが実行される環境における、メモリ等の共有リソースへのアクセスに関する技術として、例えば、以下のような特許文献が開示されている。
【００１３】
特許文献１は、複数のコアを有するマルチコアプロセッサにおいて、それぞれのコアに付随する専用メモリ領域を、他のコアから使用可能にする技術を開示する。
【００１４】
特許文献１に開示された技術によれば、複数のコアを有するマルチコアプロセッサにおいて、それぞれのコアの状態を監視し、休止状態となっているコアに関連付けされた付随メモリを、他のコアから使用可能とする。係る付随メモリは、外部メモリに比して高速にアクセス可能であることから、特許文献１に開示された技術によれば、高速アクセス可能なメモリ領域を有効活用可能である。
【００１５】
特許文献２は、マルチコアプロセッサにおいて、複数のコアが異なるキャッシュメモリの領域に同時にアクセスする技術を開示する。
【００１６】
特許文献２に開示された技術は、セマフォア管理テーブルを用いて、排他制御対象に対する各コアからのアクセスを制御する。また、特許文献２に開示された技術は、係る排他制御の際に、各コアに割り当てられて優先度を考慮する。特許文献２に開示された技術によれば、排他制御対象へのアクセスをセマフォアに基づいて制御可能であると共に優先度が高い処理を短いオーバーヘッドで実行可能である。
【００１７】
特許文献３は、共有メモリの排他制御装置等に関する技術を開示する。
【００１８】
特許文献３に開示された技術によれば、複数のプロセッサと共有メモリを有するシステムにおいて、各プロセッサが、メモリバスのアドレス信号線に当該プロセッサの識別信号を設定することにより、当該メモリの排他使用権を獲得する。メモリアクセスコントローラは、アドレス信号線を監視することにより、排他使用権を獲得したプロセッサを認識し、他のプロセッサからのアクセス要求にリトライ応答を返す。これにより、特許文献３に開示された技術は、各プロセッサから共有メモリへのアクセスに関する排他制御を実現する。
【００１９】
特許文献４は、複数のプロセッサを有し、プロセッサ毎に用意されたプライベートメモリと、全てのプロセッサからアクセス可能な共有メモリを有するマルチプロセッサシステムに関する技術を開示する。特許文献４に開示された技術は、プロセッサ毎に割り当てられたローカルメモリにマルチタスク・オペレーティングシステムを実装する。そして、係るオペレーティングシステムのカーネル部分をプロセッサ毎のプライベートメモリに配置し、タスク情報部分を共有メモリに配置する。特許文献４に開示された技術によれば、カーネル部分へのアクセスにはプロセッサ間でメモリアクセスバスの競合が発生しないため、システム全体のスループット（処理性能）を向上可能である。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２００９−０３７４０３号公報
【特許文献２】特開２００７−１４１１５５号公報
【特許文献３】特開２００３−２８０９８０号公報
【特許文献４】特開２００１−１５５００１号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
上記したように、複数のタスクが同時に実行されるマルチコアシステムにおいては、メモリ領域等の共有リソースにアクセスする際の排他制御に伴う、処理性能の低下を抑えることが可能な技術が求められている。また、係る技術は、複数のタスクから当該リソースへのアクセスを並行して処理可能であると共に、膨大なリソースを必要としないことが望ましい。
【００２２】
ここで、上記特許文献１は、複数のコアにおいて同時に複数のタスク（プログラム）が実行された場合における、付随メモリにたいする排他制御については何ら考慮されていない。
【００２３】
上記特許文献２は、各コアに対して１つのタスクのみが割り当てられることを前提としている。また、コア間で共有するリソースをアクセスする際には、通常の排他制御処理が必要となる。
【００２４】
上記特許文献３は、回路規模の増大を抑え、バスの使用効率等を向上する実装技術であり、共有メモリにアクセスする際にはプロセッサ間の排他制御が必要となる。
【００２５】
また、上記特許文献４は、各プロセッサにおいて実行されるタスクが、例えばローカルメモリ上の特定の領域を共有する場合の排他制御に関して、具体的に言及していない。各プロセッサにおいてタスクは並列に実行されることから、ローカルメモリ上の特定の領域に同時にアクセスする際には、一般的な排他制御が必要となることが予想される。このため、上記各特許文献に開示された技術のみでは、上記した課題を十分に解決することができない。
【００２６】
本発明は、上記の事情を鑑みてなされたものである。即ち、本発明は、複数のプロセッサコアを有するマルチコアシステムにおいて、複数のタスクがそれぞれ特定のリソースに並行してアクセスすることが可能な情報処理装置等を提供することを、主たる目的とする。
【課題を解決するための手段】
【００２７】
上記の目的を達成すべく、本発明に係る情報処理装置は、以下の構成を備えることを特徴とする。即ち、本発明に係る情報処理装置は、１以上のタスクを実行可能な複数の演算処理手段と、上記演算処理手段に関連付けされ、当該演算処理手段において実行される上記タスクから出力される情報を保持する第１の記憶手段である専用メモリ領域と、１以上の上記タスクを上記演算処理部に割り当てる演算処理割り当て管理手段と、１以上の上記タスクの内、特定の上記タスクが通知した上記専用メモリ領域に対するアクセス要求を受け付け、上記演算処理割り当て管理手段に対して当該特定の上記タスクを実行している上記演算処理手段の占有を要求すると共に、当該演算処理手段に関連付けされた上記専用メモリ領域に対する上記アクセス要求を処理する、リソースアクセス手段と、を有することを特徴とする。
【００２８】
本発明に係る、情報処理装置におけるリソースアクセス方法は、以下の構成を備えることを特徴とする。即ち、本発明に係る、情報処理装置におけるリソースアクセス方法は、１以上のタスクを実行可能な複数の演算処理手段と、上記演算処理手段に関連付けされ、当該演算処理手段において実行される上記タスクから出力される情報を保持する第１の記憶手段である専用メモリ領域と、を有する情報処理装置が、１以上の上記タスクを上記演算処理部に割り当てる演算処理割り当て管理手段に対して、１以上の上記タスクの内、特定の上記タスクが通知した上記専用メモリ領域に対するアクセス要求を受け付けた場合に、当該特定の上記タスクを実行している上記演算処理手段の占有を要求し、当該演算処理手段に関連付けされた上記専用メモリ領域に対する上記アクセス要求を処理することを特徴とする。
【００２９】
また、同目的は、上記構成を有する通信制御装置、並びに対応する通信制御方法を、コンピュータによって実現するコンピュータ・プログラム、及び、そのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００３０】
本発明によれば、複数のプロセッサコアを有するマルチコアシステムにおいて、複数のタスクがそれぞれ特定のリソースに並行して任意の情報を出力することが可能である。より具体的には、複数のタスクが、係るプロセッサコア毎に用意されたリソースに対して並行してアクセスすることが可能な情報処理装置等を提供することが可能である。
【図面の簡単な説明】
【００３１】
【図１】図１は、本願発明の第１の実施形態に係る、マルチコアシステムの概念的な構成を例示するブロック図である。
【図２】図２は、本願発明の第１の実施形態に係る、専用メモリ領域の概念的な構成を例示する図である。
【図３】図３は、本願発明の第１の実施形態に係る、専用メモリ領域に含まれる情報保持領域の概念的な構成を例示する図である。
【図４】図４は、本願発明の第１の実施形態に係る、マルチコアシステムを実現可能なハードウェア構成を例示するブロック図である。
【図５】図５は、本願発明の第１の実施形態に係るマルチコアシステムにおける、タスクからの情報出力要求を処理する過程を例示する、フローチャートである。
【図６】図６は、本願発明の第１の実施形態に係るマルチコアシステムにおける、ライブラリにおけるファイル出力要求を処理する過程を例示する、フローチャートである。
【図７】図７は、本願発明の第１の実施形態に係るマルチコアシステムにおける、ファイル出力処理の過程を例示する、フローチャートである。
【図８】図８は、本願発明の第２の実施形態に係る、情報処理装置の構成を概念的に例示するブロック図である。
【図９】図９は、本願発明の各実施形態に係る情報処理装置を実現可能なハードウェア構成を例示するブロック図である。
【発明を実施するための形態】
【００３２】
次に、本発明を実施する形態について図面を参照して説明する。以下の実施の形態に記載されている構成は単なる例示であり、本願発明の技術範囲はそれらには限定されない。
【００３３】
＜第１の実施形態＞
以下、図１及び図２を参照して、本実施形態に係る情報処理装置であるマルチコアシステム１００の構成にについて説明する。
【００３４】
図１は本実施形態に係るマルチコアシステム１００の構成を概念的に例示する図である。図１に例示するように、マルチコアシステム１００は、コア１０１（図１に例示する「コア０１」乃至「コア０４」）と、係るコア１０１からアクセス可能な専用メモリ領域１０２（図１に例示する「専用メモリ領域０１」乃至「専用メモリ領域０４」）を有する。
【００３５】
また、マルチコアシステム１００は、上記コア１０１において実行される複数のタスク１０３と、上記タスク１０１等に対して上記専用メモリ領域１０２等へのアクセス機能を提供するライブラリ１０４と、上記専用メモリ領域１０２に保持（格納）された情報をファイル１０６に出力するファイル出力部１０５とを有する。
【００３６】
また、マルチコアシステム１００は、上記タスク１０３の実行等を制御するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を有する。係るＯＳは、各タスク１０３の実行順序や、各タスクのコア１０１への割り当てなどを制御するスケジューラ１０７を有し、係るスケジューラ１０７は、コア割り当て管理部１０８を有する。以下、それぞれの構成要素について説明する。
【００３７】
コア１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算装置であり、タスク１０３に実装された処理を実行する。本実施形態におけるコア１０１は、それ自体で単一のＣＰＵであってもよく、あるいは、単一のＣＰＵの一部を構成する演算処理ユニットであってもよい。図１に例示する具体例においては、コア１０１として「コア０１」乃至「コア０４」が例示されている。本実施形態におけるマルチコアシステム１０１はこれに限定されず、任意の個数のコア１０１を採用してよい。
【００３８】
なお、マルチコアシステム１００においては、コア１０１を割り当てられたタスク１０３のみが実行状態とされ、コア１０１を割り当てられていないタスク１０３の実行は中断される。この場合、当該タスク１０３の処理は一時的に停止するが、タスク１０３自体は処理が停止していることを認識しない。
【００３９】
専用メモリ領域１０２は、後述するタスク１０３から出力される各種情報を保持する領域である。専用メモリ領域１０２は、コア１０１毎に設けられ、１つの専用メモリ領域１０２は、一つのコア１０１に関連付けられる。本実施形態において、係る専用メモリ領域１０２にアクセス可能なのは、当該専用メモリ領域が関連付けられたコア１０１において実行されるタスク１０３に限定される。
【００４０】
即ち、特定のコア１０１に関連付けされた専用メモリ領域１０２に対しては、他のコア１０１において実行されるタスク１０３はアクセスすることができない。ただし、後述するファイル出力部１０５による専用メモリ領域初期化処理に限り、当該ファイル出力部１０５がどのコア１０１により実行されている場合でも、全ての専用メモリ領域１０２にアクセス可能とする。なお、上述したアクセス制限の具体的な方法は、例えば周知のＯＳや、周知のメモリコントローラ等の技術を採用してよいため、詳細な説明は省略する。
【００４１】
本実施形態における専用メモリ領域１０２は、例えば、図２に例示するような管理情報領域２０１と、情報保持領域２０２とを有する。図２に例示する具体例においては、管理情報領域２０１は、専用メモリ領域１０２に関する管理情報として、全体領域サイズ２０１ａと、ファイル出力中フラグ２０１ｂと、空き領域サイズ２０１ｃと、空き領域ポインタ２０１ｄと、を有する。
【００４２】
全体領域サイズ２０１ａは、当該専用メモリ領域１０２において情報を保持可能な全体のサイズを保持する領域である。
【００４３】
ファイル出力中フラグ２０１ｂは、後述するファイル出力部１０５において、当該専用メモリ領域１０２に保持されている情報を、特定のファイル１０６に出力する処理を実行しているか否かを表す情報を保持する。
【００４４】
空き領域サイズ２０１ｃは、情報保持領域２０２における、空き領域２０２ｂのサイズを保持する。
【００４５】
空き領域ポインタ２０１ｄは、空き領域２０２ｂの先頭位置を表す情報を保持する。
【００４６】
情報保持領域２０２は、タスク１０３から出力される情報を保持する領域であり、係る情報が書き込まれた使用済み領域２０２ａと、未使用の空き領域２０２ｂとを有する。
【００４７】
使用済み領域２０２ａは、当該専用メモリ１０２が関連付けされたコア１０１において実行されるタスク１０３から出力された各種情報が書き込まれた領域である。なお、係るタスク１０３の実行状況によっては、使用済み領域２０２ａが存在しない場合（情報が出力されていない場合）もある。
【００４８】
図３に例示するように、情報保持領域２０２は、ヘッダ情報３０１とタスクからの出力情報３０２とを保持する。本実施形態においては、ヘッダ情報３０１、及び、タスクからの出力情報３０２は、後述するライブラリ１０４によって情報保持領域２０２に書き込まれる。図３に例示する具体例においては、ヘッダ情報３０１は、出力時刻３０１ａ、タスクＩＤ３０１ｂ、及び、サイズ３０１ｃを有する。
【００４９】
出力時刻３０１ａは、特定のタスク１０３から出力された出力情報３０２が、専用メモリ領域１０２に書き込まれた時刻を表す情報を保持する。
【００５０】
タスクＩＤ３０１ｂは、出力情報３０２を書き込んだタスク１０３を一意に識別可能な識別情報を保持する。係る識別情報としては、例えば、後述するタスク１０３に関するプロセスＩＤ、スレッドＩＤ、あるいはこれらとプロセス名との組合せ等を採用してもよい。
【００５１】
サイズ３０１ｃは、タスクからの出力情報３０２のサイズを保持する。
【００５２】
上記ヘッダ情報３０１は、タスク１０３が指定した情報を専用メモリ領域１０２に書き込む際に、後述するライブラリ１０４によって付加される。なお、係るヘッダ情報３０１は、情報を出力したタスク１０３と、出力された情報の内容を特定するために用いられる。
【００５３】
タスク１０３は、上記したように、マルチコアシステム１００において実行されるプロセスやスレッド等である。各タスク１０３がどのような処理を実行するかは、タスク１０３を実装するソフトウェア・プログラム（コンピュータ・プログラム）等において任意に定めておよい。
【００５４】
なお、本実施形態におけるタスク１０３は、後述するライブラリ１０４を介して、上記専用メモリ領域１０２に対して各種情報を出力する。タスク１０３が出力する情報の内容は適宜定めてよく、例えば、当該タスク１０３の処理に関するログの情報等を含んでもよい。
【００５５】
ライブラリ１０４は、上記タスク１０４や、後述するファイル出力部１０５等に対して、専用メモリ領域１０２にアクセスする機能を提供するソフトウェア・プログラムである。より具体的には、ライブラリ１０４は、上記専用メモリ領域１０２に対する書き込み・読み込み機能や、上記専用メモリ領域１０２における特定の領域を初期化する機能等を提供する。
【００５６】
本実施形態におけるライブラリ１０４は、タスク１０３からの情報出力要求に応じて、当該タスク１０３が割り当てられているコア１０１に関連付けされた専用メモリ領域１０４を特定し、当該専用メモリ領域１０４へ情報の書き込みを行う。また、当該書き込み処理の間、当該タスク１０３に割り当てられたコア１０１を、独占的に使用可能とすることを後述するコア割り当て管理部１０８に要求する。また、専用メモリ領域１０２の使用状況に応じて、後述するファイル出力部１０５に対して、メモリ領域内の情報をファイル１０６等に出力することを要求する。本実施形態におけるライブラリ１０４は、タスク１０３に対して、係るタスク１０３が出力する各種情報の内容と、出力サイズを指定可能なインターフェイスを提供してもよい。
【００５７】
本実施形態におけるライブラリ１０４は、例えば、当該ライブラリ１０４を利用するタスタスク１０３が実行されるコア１０１において、係るタスク１０３と共に実行されてもよい。即ち、本実施形態におけるライブラリ１０４は、例えば、当該ライブラリ１０４を利用するタスク１０３とリンクされることにより、係るタスクと一体として、コア１０１により実行されてもよい。
【００５８】
上記タスク１０３及び、ライブラリ１０４における各処理の具体的な内容については、後述する。
【００５９】
ファイル出力部１０５は、専用メモリ領域１０２に書き込まれた各種情報を保存する処理、及び、専用メモリ領域１０２を再利用するための初期化処理等を実行するタスクである。ファイル出力部１０５は、上記ライブラリ１０４から適当な契機で呼び出され、専用メモリ領域１０２に書き込まれた各種情報をファイル１０６等に転送する。また、ファイル出力部は、当該専用メモリ領域１０２の管理情報を初期化する。これにより、当該専用メモリ領域１０２に新たな情報を書き込むことが可能となる。
【００６０】
本実施形態におけるファイル１０６は、図示しないハードディスク等の２次記憶装置に設けられたファイルシステム等によって提供される記憶領域である。本実施形態におけるファイル１０６は、上記ファイル出力部１０５により出力された各種情報を保持（記録）する。
【００６１】
なお、ファイル出力部１０５及びファイル１０６については、上記に限定されず、例えば、ファイル１０６を図示しないデータベースのレコードとして実現し、ファイル出力部１０５が係るデータベースのレコードを出力するよう構成してもよい。
【００６２】
スケジューラ１０７は、マルチコアシステム１００を構成するマルチタスクＯＳの一部として設けられ、実行可能状態で待機しているタスク１０３に対して、所定の基準に基づいてコア１０１を割り当てるスケジューリングを行う。
【００６３】
ここで、コア１０１において実行するタスク１０３を選択する基準としては、例えば、優先度の高さや、処理完了までの推定残り時間の短さ等の基準を適宜選択してよい。また、係るタスク１０３を実行するコア１０１を選択する基準としては、例えば、各コアに対する使用率（各コアの稼働率）のバランスや、キャッシュヒットの可能性等の基準を適宜選択してよい。これらの基準は、例えば、マルチコアシステム１００に対して定められた所定のポリシーに基づいて選択してもよい。
【００６４】
本実施形態におけるスケジューラ１０７は、後述するコア割り当て管理部１０８が管理する割り当て可能なコア１０１の情報（割り当て可能コア情報１０９）に基づいて、特定のタスク１０３に対してコア１０１を割り当てる。なお、本実施形態におけるスケジューラ１０７は、上記説明したコアの割り当て以外に、周知のマルチタスクＯＳに実装されたスケジューラと同様の機能を有してもよい。
【００６５】
コア割り当て管理部１０８は、タスク１０３に対して割り当て可能なコア１０１の情報（割り当て可能コア情報１０９）を管理し、係る情報を上記スケジューラ１０７に提供する。また、コア割り当て管理部１０８は、ライブラリ１０４から、特定のコア１０１を特定のタスク１０３に独占的に割り当てる（以下「占有」と称する場合がある）要求を受け付ける。コア割り当て管理部１０８は、係る占有要求に基づいて、各コア１０１を、タスク１０３に割り当て可能か否かを制御する。
【００６６】
なお、本実施形態におけるマルチタスクＯＳは、周知のマルチタスクＯＳと同様に、ある特定の瞬間において、１つのコア１０１は１つのタスク１０３のみを実行するように制御する。即ち、１つのコアは、特定の瞬間において、同時に２つ以上のタスクを処理しないように制限される。
【００６７】
なお、係るマルチタスクＯＳは、例えば、一定の時間毎に特定のコア１０１において実行されるタスク１０３を切り替えることにより（例えば、一つのコア１０１を時分割で複数のタスク１０３に割り当てることにより）、１つコアが一定期間内に複数のタスクを実行可能なように制御してもよい。なお、係るタスク１０３の切り替え動作は周知の技術を採用してよいため、詳細な説明は省略する。
【００６８】
上記説明したマルチコアシステム１００を実現可能なハードウェア構成の具体例を、図４に例示する。
【００６９】
マルチコアプロセッサ４０１は、複数のコア１０１と、当該コア１０１に対する入出力を制御するＩＯコントローラとを有する。
【００７０】
１次記憶装置４０２は、上記コア１０１に関連付けされた複数の専用メモリ領域１０２と、各コアにおいて実行されるタスク１０３や、マルチタスクＯＳからアクセス可能な汎用メモリ領域と、１次記憶装置に入出力やデータの配置を制御するメモリコントローラとを有する。なお、係る１次記憶装置４０２は、例えば、揮発性のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等により構成してもよい。
【００７１】
２次記憶装置４０３は、例えば、ハードディスク等により構成された不揮発性の記憶領域である。２次記憶装置４０３は、例えば、ファイルシステムにおいて提供される各種ファイルや、データベース等を記憶してもよい。例えば、本実施形態において、図１に例示するファイル１０６は、２次記憶装置４０３に記憶されてもよい。
【００７２】
プログラム記憶領域４０４は、本実施形態におけるマルチコアシステム１００を構成するソフトウェア・プログラムを記憶する領域である。図４に例示する構成においては、プログラム記憶領域を２次記憶装置４０３とは別の要素として表記しているが、プログラム記憶領域４０４は２次記憶装置４０３に含まれてもよい。また、プログラム記憶領域４０４は、例えば、２次記憶装置４０３とは別にＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等により構成してもよい。
【００７３】
図４のように構成されたマルチコアシステム１００によれば、例えば、マルチタスクＯＳがプログラム領域４０４に格納されたタスク１０３及びライブラリ１０４を１次記憶装置４０２にロードし、係るロードされたタスク１０３をマルチコアプロセッサ４０１におけるコア１０１が実行することにより、タスク１０３に実装された各種処理が実行される。
【００７４】
次に、上記のように構成されたマルチコアシステムの動作について説明する。以下においては、図５乃至図７に例示するフローチャート参照して、上記タスク１０３から専用メモリ領域１０２に各種情報を出力する動作を説明する。
【００７５】
まず、図５に例示するフローチャートを参照して、タスク１０３及びライブラリ１０４の動作について説明する。
【００７６】
以下の説明においては、特定のタスク１０３（以下、仮に「タスク０１」と称する）に対して、特定のコア０１（以下、仮に「コア０１」と称する）が割り当てられ、当該タスク０１がコア０１によって実行されている状態を仮定する。
【００７７】
まず始めに、タスク０１が、ライブラリ１０４が提供する機能を使用して、任意の情報の出力を要求する（ステップＳ５０１）。より具体的には、タスク０１が、出力しようとする情報の内容とそのサイズとを指定して、ライブラリ１０４が提供する情報出力用のインターフェイスを呼び出す。以下、このようなタスク１０１から発せられる任意の情報を出力する要求を、「情報出力要求」と称する場合がある。
【００７８】
上記タスク０１からの情報出力要求を受け付けたライブラリ１０４は、コア割り当て管理部１０８に対して、上記タスク０１に対するコア０１の割り当てを外さないよう、コア０１の占有を要求する（ステップＳ５０２）。ステップＳ５０２の後、タスク０１は、占有したコア０１に関連付けされた専用メモリ領域１０２（以下、仮に「専用メモリ領域０１」と称する）に各種情報を出力可能となる。
【００７９】
以下においては、ライブラリ１０４が、専用メモリ領域０１における管理情報領域２０１に保持された各種情報を確認し、係る確認結果に応じて所定の処理を実行する（ステップＳ５０３乃至ステップＳ５０８）。以下、それぞれの処理内容について説明する。
【００８０】
まず、ライブラリ１０４は、専用メモリ領域０１に保持された情報がファイル出力部１０５によりファイル１０６へ出力中か否かを確認する（ステップＳ５０３）。より具体的には、ライブラリ１０４は、専用メモリ領域０１における管理情報領域２０１のファイル出力中フラグ２０１ｃを確認することにより、専用メモリ領域０１に保持された情報がファイル１０６へ出力中か否かを判定する。この場合、ライブラリ１０４は、例えば、ファイル出力フラグ２０１ｃに「ＯＮ」が設定されている場合はファイルへ出力中であると判定し、ファイル出力フラグ２０１ｃに「ＯＦＦ」が設定されている場合はファイルへ出力中ではないと判断してもよい。
【００８１】
係る判定の結果、ファイル出力中の場合（ステップＳ５０４においてＹＥＳ）、専用メモリ領域０１に保持された情報をファイルに出力する処理が実行されているため、専用メモリ用域０１に対するアクセスを避ける必要がある。即ち、係る専用メモリ０１に対しては、上記タスク０１の情報出力要求に係る情報を書き込む（出力する）ことができない。
【００８２】
このため、ライブラリ１０４は、専用メモリ領域０１以外の専用メモリ用域１０２（コア０１以外のコア１０１に関連付けされた専用メモリ領域１０２）に、タスク０１から出力する情報を書き込む必要がある。
【００８３】
よって、この場合、ライブラリ１０４は、コア割り当て管理部１０８に対して、コア０１以外のコアのタスク０１に対する割り当てと占有を要求する（ステップＳ５０５）。また、ライブラリ１０４は、コア割り当て管理部１０８に対して、タスク０１を実行しているコア０１の占有を解除することを通知してもよい。その後、コア０１以外のコア１０１が、スケジューラ１０７によってタスク０１に割り当てられた場合、ライブラリ１０４は、ステップＳ５０４から処理を続行する。
【００８４】
次に、ステップＳ５０３における確認の結果、ファイル出力中ではない場合（ステップＳ５０４においてＮＯ）、ライブラリ１０４は、専用メモリ領域１０２における空き領域２０２ｂのサイズを確認する（ステップＳ５０６）。より具体的には、ライブラリ１０４は、専用メモリ領域０１における空き領域サイズ２０１ｃを確認することにより、空き領域２０２ｂのサイズを確認する。
【００８５】
ステップＳ５０６における確認の結果、専用メモリ領域０１における空き領域２０２ｂのサイズが、タスク０１が出力を要求する情報のサイズと、ヘッダ情報３０１のサイズとの合計よりも小さい場合（ステップＳ５０７においてＮＯ）、当該専用メモリ領域０１は、タスク０１が出力する情報を保持するだけの空き領域を提供できない。この場合、タスク０１は当該専用メモリ領域０１に対して情報を書き込む（出力する）ことができない。
【００８６】
このため、ライブラリ１０４は、ファイル出力部１０６に対して、専用メモリ領域０１が保持する情報をファイルに出力するよう、ファイル出力要求処理（ステップＳ５０８）を実行する。
【００８７】
以下、ステップＳ５０８におけるファイル出力要求処理につて、図６に例示するフローチャートを参照して説明する。
【００８８】
まず、ライブラリ１０４は、ファイル出力部１０６以外の他のタスク１０３が、専用メモリ領域０１にアクセスしないように、専用メモリ領域０１におけるファイル出力中フラグ２０１ｂを設定（「ＯＮ」に設定）する（ステップＳ６０１）。
【００８９】
次に、ライブラリ１０４は、ファイル出力部１０６に対して、専用メモリ領域０１が保持する情報（より具体的には、情報保持領域２０２に保持された情報）を、特定のファイル１０６に出力するよう要求する（ステップＳ６０２）。
【００９０】
ライブラリ１０４が上記ステップＳ６０２を実行した場合、ファイル出力部１０６が専用メモリ領域０１における情報保持領域２０２が保持するデータを、ファイルに出力する処理を実行する。よって、タスク０１は専用メモリ領域０１に情報を書き込む（出力する）ことができない。このため、ステップＳ５０８の後、ライブラリ０１はステップＳ５０５から処理を続行し、タスク０１に対してコア０１以外のコア１０１の割り当てと、割り当てたコアの占有を要求する。その後、コア０１以外のコア１０１が、スケジューラ１０７によってタスク０１に割り当てられた場合、ライブラリ１０４は、ステップＳ５０４から処理を再度実行する。
【００９１】
次に、ステップＳ５０６における確認の結果、専用メモリ領域０１における空き領域２０２ｂのサイズが充分大きい場合（ステップＳ５０７においてＹＥＳ）、タスク０１は、ライブラリ１０４を介して、当該専用メモリ領域０１の情報保持領域２０２に、任意の情報を書き込む（出力する）（ステップＳ５０９）。
【００９２】
より具体的には、タスク０１は、ライブラリ１０４が提供するインターフェイスを介して、任意の情報の書き込みを要求する。係る要求を受け付けたライブラリ１０４が、専用メモリ領域０１の情報保持領域２０２に、タスク０１から渡された情報を書き込む。
【００９３】
この際、ライブラリ１０４は、タスク０１が書き込みを要求した情報（以下「出力情報」と称する場合がある）に対して、ヘッダ情報３０１を付加する。そして、ライブラリ１０４は、係るヘッダ情報と、タスク０１からの出力情報とを、空き領域ポインタ２０１ｄが指定する位置に書き込む。
【００９４】
次に、ライブラリ１０４は、専用メモリ領域０１における管理情報領域２０１を更新する（ステップＳ５１０）。より具体的には、ライブラリ１０４は、空き領域サイズ２０１ｃの値を更新し、空き領域ポインタ２０１ｄの位置を変更する。
【００９５】
次に、ライブラリ１０４は、更新後の専用メモリ領域０１における空き領域サイズ２０１ｃの値を確認する（ステップＳ５１１）。即ち、ライブラリ１０４は、タスク０１からの上記出力情報を書き込んだ結果、専用メモリ領域０１においてどの程度の領域が空き領域２０２ｂとして残存しているかを確認する。
【００９６】
上記ステップＳ５１１における確認の結果、ライブラリ１０４が、所定の基準に基づいて空き領域のサイズが小さい判断した場合には（ステップＳ５１２においてＮＯ）、上記ステップＳ５０８と同様、ライブラリ１０４は、ファイル出力要求処理を実行する（ステップＳ５１４）。係るファイル出力要求処理により、専用メモリ領域０１が保持する各種情報がファイル１０６に書き出されることから、専用メモリ領域０１における空き領域２０２ｂのサイズが大きくなる。上記ステップＳ５１４の処理を実行した後、ライブラリ１０４は、下記ステップＳ５１３から処理を続行する。
【００９７】
次に、上記ステップＳ５１１における確認の結果、ライブラリ１０４が、所定の基準に基づいて空き領域のサイズが充分大きいと判断した場合には（ステップＳ５１２においてＹＥＳ）、ライブラリ１０４は、コア割り当て管理部１０８に対して、コア０１の占有を解除することを通知する（ステップＳ５１３）。上記ステップＳ５１３における処理の実行後、タスク０１以外の他のタスク１０３が、コア０１を使用可能となる。
【００９８】
なお、ステップＳ５１１において、専用メモリ領域０１における空き領域２０２ｂのサイズが十分か否かを判断する基準は、例えば、マルチコアシステム１００の特性等に応じて、適宜選択してよい。
【００９９】
次に、コア割り当て管理部１０８の動作について説明する。
【０１００】
コア割り当て管理部１０８は、各タスク１０３に対して割り当て可能なコア１０１の情報を割り当て可能コア情報１０９として保持し、係る情報をスケジューラ１０７に提供する。なお、コア割り当て管理部１０８が、割り当て可能なコア１０１に関する情報を具体的にどのように保持するかは、適宜選択してよい。
【０１０１】
コア割り当て管理部１０８は、特定のタスク１０１（ライブラリ１０４）からコア１０１に対する占有要求を受け付けていない場合、マルチタスクシステム１００において利用可能な全てのコア１０１を、割り当て可能コア情報１０８に登録する。
【０１０２】
コア割り当て管理部１０８は、特定のタスク１０１からの情報出力要求等に基づいて、ライブラリ１０４から特定のコア１０１を占有する要求（占有要求）を受け付けた場合（例えば、上記ステップＳ５０２、Ｓ５０５等）、当該占有要求の対象であるコア１０１に関する情報を当て可能コア情報１０９から削除する。
【０１０３】
スケジューラ１０７は、割り当て可能コア情報１０９に基づいて、利用可能なコア１０１を各タスク１０３に対して割り当てるため、割り当て可能コア情報１０９から削除されたコア１０１は、他のタスクに割り当てられない。即ち、コア割り当て管理部１０８、及び、スケジューラ１０７は、上記占有要求を受け付けた場合に、当該占有要求の対象であるコア１０１が、上記占有要求を行った特定のタスク１０１（ライブラリ１０４）以外のタスクに割り当てられないように制御する。
【０１０４】
これにより、情報出力要求を行った特定のタスク１０１は、明示的な排他制御を必要とせず、上記占有要求の対象であるコア１０１と、当該コアに関連付けされた専用メモリ領域１０２を独占的に使用することが可能である。
【０１０５】
また、コア割り当て管理部１０８は、ライブラリ１０４から特定のコア１０１に対する占有解除要求を受信すると（例えば、上記ステップＳ５０５、Ｓ５１３等）、当該占有解除の要求において指定された特定のコア１０１を、割り当て可能コア情報１０９に登録する。これにより、スケジューラ１０７は当該コア１０１を他のタスク１０３に割り当てることが可能となる。
【０１０６】
次に、図７に例示するフローチャートを参照して、ファイル出力部１０５の処理について説明する。
【０１０７】
ファイル出力部１０５は、例えば、ライブラリ１０４からのファイル出力要求（図５に例示するステップＳ５０８、Ｓ５１４等）を待機する（ステップＳ７０１）。より具体的には、ファイル出力部１０５は、例えば、マルチコアシステム１００における常駐型のタスクとして、係るファイル出力要求を待ち受けてもよい。
【０１０８】
次に、ファイル出力部１０５は、ファイル出力要求を受け付けたか確認し（ステップＳ７０２）、ファイル出力要求を受け付けていない場合（ステップＳ７０２においてＮＯ）、再度ステップＳ７０１の待機処理を実行する。
【０１０９】
一方、ファイル出力要求を受け付けた場合（ステップＳ７０２においてＹＥＳ）、当該ファイル出力要求において指定された特定のコア１０１（以下、仮に「コア０２」とする）に関連付けされた専用メモリ領域１０２（以下、仮に「専用メモリ領域０２」とする）に保持された情報を読み出す（ステップＳ７０３）。より具体的には、ファイル出力要求において指定されて専用メモリ領域０２の管理情報領域２０１及び情報保持領域２０２を順次読み出す。
【０１１０】
次に、ファイル出力部１０５は、上記ステップＳ７０３において読み出した情報を、ファイル１０６に出力する（ステップＳ７０４）。ファイル１０６に対する具体的な出力（書き込み）処理の方法は、周知の技術を採用してよいため、詳細な説明を省略する。
【０１１１】
ここで、ファイル出力部１０５が上記ステップＳ７０３乃至ステップＳ７０４の処理を実行する際、当該ファイル出力要求を通知したライブラリ１０４によって、専用メモリ領域０２のファイル出力中フラグがＯＮに設定される（図６におけるステップＳ６０１）。このため、他のタスク１０１との間で専用メモリ領域０２へのアクセスが競合することがない。即ち、ファイル出力部１０５は、明示的な排他制御を必要とせず、専用メモリ領域０２にアクセスすることが可能である。
【０１１２】
次に、ファイル出力部１０５は、専用メモリ領域０２が保持する情報の出力が完了した後、専用メモリ領域０２の管理情報を初期化する（ステップＳ７０５）。より具体的には、ファイル出力部１０５は、専用メモリ領域０２における管理情報領域２０１を初期化し、ファイル出力中フラグ２０１ｂを「ＯＦＦ」に設定する。また、ファイル出力部１０５は、管理情報領域２０１とともに、情報保持領域２０２を初期化してもよい。
【０１１３】
ステップＳ７０５における処理の後、ファイル出力部１０５はステップＳ７０１に戻って処理を続行し、更なるファイル出力要求を待機する。
【０１１４】
本実施形態におけるファイル出力部１０５はタスク１０１の一種として実現されるため、上記ステップＳ７０１乃至ステップＳ７０５の処理は、ファイル処理部１０５に割り当てられたコア１０１により実行される。スケジューラ１０７は、ファイル出力部１０５に対して任意の利用可能なコア１０１を割り当ててよい。
【０１１５】
なお、本実施形態においては、複数のファイル出力部１０５を並行して実行してもよい。この場合、複数の専用メモリ領域１０２について、係る専用メモリ領域１０２に保持されている情報が並行して複数のファイル１０６に出力される。このため、複数の専用メモリ領域１０２の空き容量を並行して増やすことが可能となり、利用可能な専用メモリ領域１０２をより速やかに用意することが可能である。
【０１１６】
以上説明したように、本実施形態に係るマルチコアシステム１００においては、１つのコア１０１は、ある瞬間においては１つのタスク１０３のみ実行可能である。また、特定の専用メモリ領域１０２には、当該特定の専用メモリ領域に関連付けされた１つの特定のコア１０１において実行されるタスク１０３のみがアクセス可能である。
【０１１７】
例えば、あるタスク１０３が情報出力要求を実行した場合、特定のコア１０１を占有して係る情報出力要求を処理することにより、他のタスク１０１は、当該特定のコア１０１に関連付けされた専用メモリ領域１０２にアクセスすることができない。これにより、複数のタスク１０３間の競合状態を回避可能である。
【０１１８】
このため、上記説明したマルチコアシステム１００によれば、複数のタスク１０３間において明示的な排他制御を実行する必要がなく、特定の専用メモリ領域１０２に対して速やかに情報を出力可能である。
【０１１９】
また、それぞれのタスク１０３は、いずれの専用メモリ領域１０２に情報を出力するかを認識する必要がない。即ち、特定の専用メモリ領域１０２に対して情報を出力できない場合（例えば、図５に例示するステップＳ５０４においてＹＥＳの場合や、ステップＳ５０７においてＮＯの場合等）、係るタスク自体を異なるコア１０１に割り当てることにより、異なる専用メモリ領域１０２に対して情報を出力可能である。即ち、記説明したマルチコアシステム１００によれば、各タスク１０３は、特定の専用メモリ領域１０２の使用状況等に影響を受けることなく、情報出力処理を速やかに実行可能である。
【０１２０】
また、上記説明したマルチコアシステム１００によれば、専用メモリ領域１０２として用意する必要がある記憶容量（サイズ）の合計は、タスク１０３からの出力要求の最大サイズにコア１０１の総数を乗じた値としてよい。コア１０１の総数は、タスク１０３の総数よりも少ない場合が多いため、全てのタスク１０３に対して専用の出漁領域を設ける場合に比べて、用意すべきメモリのサイズを抑えることが可能である。
【０１２１】
また、例えば、マルチコアシステム１００全体の性能向上のために、マルチコアプロセッサ４０１を増設した場合であっても、増加したコア数分のメモリ領域を用意することにより、各タスク１０３、ライブラリ１０４等を修正することなく、情報出力処理を実行可能である。また、この場合において、コア１０１が増加しても、各タスク１０３は情報出力処理において明示的な排他制御を必要としないため、係る情報出力処理がマルチコアシステム１００全体のボトルネックとなることはない。
【０１２２】
以上より、本実施形態におけるマルチコアシステム１００によれば、複数のタスク１０３がそれぞれ専用メモリ領域１０２に並行して任意の情報を出力することが可能である。
【０１２３】
より具体的には、コア１０１毎に専用メモリ領域１０２を用意することで、複数のタスク１０３が、係るコア１０１毎の専用メモリ領域１０２に並行して任意の情報を出力することが可能である。これにより、複数のタスク１０３が、コア１０１毎に用意されたリソース（専用メモリ領域１０２）に対して並行してアクセスすることが可能な情報処理装置（マルチコアシステム１００）を提供することが可能である。
【０１２４】
＜第２の実施形態＞
次に、本願発明の第２の実施形態について説明する。
【０１２５】
図８は、本実施形態に係る情報処理装置８００の構成を概念的に例示するブロック図である。
【０１２６】
本実施形態における情報処理装置８００は、複数の演算処理部８０１（図８に例示する「演算部０１」乃至「演算部０４」等）と、専用メモリ領域８０２（図８に例示する「専用メモリ領域０１」乃至「専用メモリ領域０４」等）とを有する。なお、本実施形態における演算処理部８０１の数は、情報処理装置８００に求められる性能等に応じて、適宜選択してよい。
【０１２７】
また、本実施形態における情報処理装置８００は、複数のタスク８０３と、リソースアクセス部８０４と、演算処理割り当て管理部８０７と、を有する。
【０１２８】
上記演算処理部８０１は、１以上のタスク８０３を実行する、演算処理装置である。
【０１２９】
上記専用メモリ領域８０２は、特定の上記演算処理部８０１に関連付けられ、当該演算処理部８０１において実行される上記タスク８０３から出力される各種情報を保持可能な、第１の記憶部である。
【０１３０】
上記タスク８０３は、例えば、上記演算処理部８０１において実行可能なように実装された各種ソフトウェア・プログラム（コンピュータ・プログラム）である。
【０１３１】
上記演算処理割り当て管理部８０７は、１以上のタスク８０３を、特定の上記演算処理部８０１に割り当てる。特定の演算処理装置８０１を割り当てられたタスク８０３は、当該演算書士装置８０１において実行される。
【０１３２】
上記リソースアクセス部８０４は、特定のタスク８０３が通知した専用メモリ領域８０２に対するアクセス要求を受け付け、上記演算処理割り当て管理部８０７に対して当該特定のタスク８０３を実行している演算処理部８０１の占有を要求すると共に、当該演算処理部８０１に関連付けされた専用メモリ領域８０２に対する上記アクセス要求を処理する。
【０１３３】
本実施形態において、上記アクセス要求は、例えば、特定のタスク８０３から専用メモリ領域８０２に対して任意の情報を出力することを要求する、情報出力要求であってもよい。
【０１３４】
また、本実施形態における情報処理装置８００は、第２記憶出力部８０５と、第２の記憶部８０６とを有してもよい。
【０１３５】
この場合、第２記憶出力部８０５は、上記リソースアクセス部８０４からの要求に応じて、特定の専用メモリ領域８０２に保持された各種情報を、第２の記憶部８０６に出力してもよい。本実施形態において、第２の記憶部８０６は、例えば、ファイルやデータベース等、専用メモリ領域８０２に保持された各種情報を保持可能な記憶装置であってもよい。
【０１３６】
また、この場合、上記専用メモリ領域８０２は、該専用メモリ領域８０２が関連付けされた演算処理部８０１において実行されるタスク８０３、または、上記第２記憶出力部８０５からのアクセスのみを受け付けてもよい。
【０１３７】
上記説明したマルチコアシステム８００においては、特定の専用メモリ領域１０２には、当該特定の専用メモリ領域１０２に関連付けされた１つの特定のコア８０１のみがアクセス可能である。
【０１３８】
例えば、あるタスク８０３が情報出力要求を実行した場合、当該タスク８０３が特定のコア８０１を占有することにより、他のタスク８０１は、当該特定のコア８０１に関連付けされた専用メモリ領域８０２にアクセスすることができない。これにより、複数のタスク８０３間の競合状態を回避可能である。
【０１３９】
このため、上記説明したマルチコアシステム８００によれば、複数のタスク８０３間において明示的な排他制御を実行する必要がなく、特定の専用メモリ領域８０２に対して速やかに情報を出力可能である。
【０１４０】
以上より、本実施形態における情報処理装置８００によれば、各コア８０１に専用の情報出力領域（専用メモリ領域８０２）を用意することで、複数のタスク８０３が互いに排他制御を行うことなく、並行して任意の情報を出力することが可能である。これにより、複数のタスク８０３が、演算処理装置８０１毎に用意されたリソース（専用メモリ領域８０２）に対して並行してアクセスすることが可能な情報処理装置８００を提供することが可能である。
【０１４１】
＜ハードウェア及びソフトウェア・プログラム（コンピュータ・プログラム）の構成＞
以下、上記説明した各実施形態における情報処理装置を実現可能なハードウェア及びソフトウェア・プログラムについて説明する。
【０１４２】
なお、以下の説明において、上記各実施形態において説明したマルチコアシステム１００及び、情報処理処装置８００をまとめて「情報処理装置等」と称する場合がある。
【０１４３】
上記各実施形態において説明した情報処理装置等の各構成要素は、それぞれの機能を実現する専用のハードウェア装置により構成してもよい。この場合、係る情報処理装置等の構成要素は、全ての機能を統合したハードウェア（処理ロジックを実装した集積回路等）として実現してもよく、特定の機能を実現する個別のハードウェアの組合せにより構成してもよい。
【０１４４】
また、係る情報処理装置等の構成要素は、図９に例示するようなハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム（コンピュータ・プログラム）とによって構成されもよい。なお、以下の説明において、図９に例示するハードウェアを、単に情報処理ハードウェアと称する場合がある。
【０１４５】
図９における演算装置９０１は、汎用のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やマイクロプロセッサ等の演算処理装置である。演算装置９０１は、例えば後述する不揮発性記憶装置９０３に記憶された各種ソフトウェア・プログラムを記憶装置９０２に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。
【０１４６】
図９に例示する具体例において、演算装置９０１は例えばマルチコアプロセッサ４０１に相当し、複数の演算処理部であるコアを有してもよい。
【０１４７】
記憶装置９０２は、演算装置９０１から参照可能な、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置９０２は、揮発性のメモリ装置であってもよい。
【０１４８】
また、記憶装置９０２は、１次記憶装置４０２に相当し、専用メモリ用域（１０２，８０２）を提供してもよい。
【０１４９】
不揮発性記憶装置９０３は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置であり、各種ソフトウェア・プログラムやデータ等を記録してもよい。
【０１５０】
また、不揮発性記憶装置９０３は、２次記憶装置４０３に相当し、ファイルシステムによって提供されるファイルや、データベース等を記憶してもよい。なお、不揮発性記憶装置９０３は、プログラム記憶領域４０４として、各種ソフトウェア・プログラム（コンピュータ・プログラム）を記憶してもよい。
【０１５１】
ネットワークインターフェイス９０６は、各種通信ネットワークに接続可能なインターフェイス装置である。係るネットワークインターフェイス９０６としては、例えば、有線及び無線式のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）接続用インターフェイス装置等を採用してもよい。
【０１５２】
上記説明した各実施形態においては、例えば、ファイル１０６あるいは第２の記憶部８０６が、何らかの通信ネットワークにより接続された外部装置により提供される場合、ネットワークインターフェイス９０６を介して、各タスク（１０３，８０３）からの出力情報を当該外部装置に送信してもよい。
【０１５３】
外部記憶装置９０４は、例えば、後述する外部記憶媒体９０５に対するデータの読み込みや書き込みを処理する装置である。
【０１５４】
外部記録媒体９０５は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
【０１５５】
上述した各実施形態を例に説明した本発明は、例えば、図９に例示した情報処理ハードウェアにより上記情報処理装置等を構成し、係る情報処理ハードウェアに対して、上記各実施形態の説明において参照したフローチャートの機能を実現可能なソフトウェア・プログラムを供給した後、そのソフトウェア・プログラムを、演算装置９０１が実行することによって達成されてもよい。
【０１５６】
上述した各実施形態において、上記各図に示した各部（例えば、コア割り当て管理部（１０８、８０７）、ファイル出力部１０５、第２記憶出力部８０５、ライブラリ１０４、リソースアクセス部８０４、タスク（１０３、８０３）等）は、上述したハードウェアにより実行されるソフトウェア・プログラムとして実現可能である。
【０１５７】
また、これらは、上述したハードウェアにより実行されるソフトウェア・プログラムの機能（処理）単位である、ソフトウェア・モジュールとして実現することも可能である。ただし、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
【０１５８】
例えば、上記情報処理装置等を構成する各部をソフトウェア・プログラムとして実現する場合、これらのソフトウェア・プログラムを不揮発性記憶装置９０３に記憶しておき、演算装置９０１がそれぞれの処理を実行する際に、これらのソフトウェア・プログラムを記憶装置９０２に読み出すよう構成してもよい。
【０１５９】
また、これらのソフトウェア・プログラム間は、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成してもよい。このような構成により、これらのソフトウェア・プログラム間は、相互に通信可能に接続可能である。
【０１６０】
更に、上記各ソフトウェア・プログラムを外部記憶媒体９０５に記録しておき、上記通信装置等の出荷段階、あるいは、運用段階等において、適宜外部記憶装置９０４を通じて当該ソフトウェア・プログラムを不揮発性メモリ９０３に格納するよう構成してもよい。
【０１６１】
また、上記各実施形態における情報処理装置等の構成要素をソフトウェア・プログラムとして実現する場合、上記各実施形態において説明したファイル１０６や第２の記憶部８０６に出力される情報は、適切なデータ構造等を用いて、不揮発性記憶装置９０３に記憶してもよい。また、これらの情報は、任意のデータベース等に格納することにより、不揮発性記憶装置９０３に記憶してもよい。
【０１６２】
なお、上記各情報処理装置等への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは、出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは、係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
【０１６３】
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更、または、改良を加えることが可能であることは明らかである。そのような場合、係る変更、または、改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【産業上の利用可能性】
【０１６４】
本発明は、複数のタスクが並行して動作すると共に、各タスクがそれぞれの処理結果等の情報を並行して出力する情報処理システム等に適用可能である。
【符号の説明】
【０１６５】
１００  マルチコアシステム
１０１  コア
１０２  専用メモリ領域
１０３  タスク
１０４  ライブラリ
１０５  ファイル出力部
１０６  ファイル
１０７  スケジューラ
１０８  コア割り当て管理部
１０９  割り当て可能コア情報
４０１  マルチコアプロセッサ
４０２  １次記憶装置
４０３  ２次記憶装置
４０４  プログラム記憶領域
８００  情報処理装置
８０１  演算処理部
８０２  専用メモリ領域
８０３  タスク
８０４  リソースアクセス部
８０５  第２記憶出力部
８０６  第２の記憶部
８０７  演算処理割り当て管理部
９０１  演算装置
９０２  記憶装置
９０３  不揮発性記憶装置
９０４  外部記憶装置
９０５  外部記録媒体
９０６  ネットワークインターフェイス
【図１】
2015170270.tif 000003
【図２】
2015170270.tif 000004
【図３】
2015170270.tif 000005
【図４】
2015170270.tif 000006
【図５】
2015170270.tif 000007
【図６】
2015170270.tif 000008
【図７】
2015170270.tif 000009
【図８】
2015170270.tif 000010
【図９】
2015170270.tif 000011