第1アプリケーションソフトウェア以下、アプリケーションと称す内の第1処理を実行する割当先デバイスを登録するテーブルに基づいて前記第1アプリケーション内の前記第1処理を前記割当先デバイスに割り当て、前記第1アプリケーションで使用されるメモリのポートの識別情報をポート接続器に通知するとともに前記ポート番号をテーブルに登録し、前記ポートに記憶領域を割り当てるとともに前記記憶領域のアドレスを前記テーブルに登録することを特徴とするメモリ制御方法。前記第1アプリケーション内の前記第1処理を実行する前記割当先デバイスが前記テーブルに登録されていないとき、前記第1アプリケーションは負荷が最小であるデバイスに割り当てられることを特徴とする請求項1に記載のメモリ制御方法。前記ポートは、前記割当先デバイスが前記テーブルに登録される前記第1アプリケーションに割り当てられる第1ポートと、前記割当先デバイスが前記テーブルに登録されない前記第1アプリケーションに割り当てられる第2ポートとを含むことを特徴とする請求項1または請求項2に記載のメモリ制御方法。使用されていない前記第1ポートが存在するか否かが判断され、使用されていない前記第1ポートが存在する場合には、前記第1ポートが前記ポート接続器に通知され、使用されていない前記第1ポートが存在しない場合には、前記第2ポートを前記ポート接続器に通知することを特徴とする請求項1乃至請求項3の何れか一に記載のメモリ制御方法。前記割当先デバイスがアクセスするアドレスと前記記憶領域のアドレスとを変換するアドレス変換テーブルをアドレス変換器に通知することを特徴とする請求項1乃至請求項4の何れか一に記載のメモリ制御方法。前記第1アプリケーションが第2アプリケーションに切り替わるとき、前記テーブルから前記第2アプリケーションに対応するポートの識別情報を取得して前記ポート接続器に通知することを特徴とする請求項1乃至請求項5の何れか一に記載のメモリ制御方法。前記第1アプリケーション内の前記第1処理が終了するとき、前記テーブルに登録された前記ポートの識別情報および前記アドレスを消去することを特徴とする請求項1乃至請求項6の何れか一に記載のメモリ制御方法。前記第1アプリケーション内の第1処理が終了するとき、前記テーブルに前記第1処理に続く第2処理が登録されるときは前記テーブルに基づいて前記第2処理に対応する割当先デバイスに割り当てることを特徴とする請求項1乃至請求項7の何れか一に記載のメモリ制御方法。前記第1アプリケーションを実行中に、前記メモリのアクセス回数および前記第1デバイスの使用回数を記録し、前記アクセス回数、前記使用回数、および前記第1アプリケーションの処理負荷に基づいて前記第1アプリケーションを前記テーブルに登録するか否かを決定することを特徴とする請求項1乃至請求項8の何れか一に記載のメモリ制御方法。アプリケーション内の処理を実行する割当先デバイスを登録するテーブルと、前記テーブルに基づいて前記アプリケーション内の前記処理に割り当てられた前記割当先デバイスとメモリとの間で使用される前記メモリのポートの識別情報が通知されるポート接続器と、前記ポートに割り当てられる記憶領域を有するメモリと、前記割当先デバイスがアクセスするアドレスと前記記憶領域のアドレスとを変換するアドレス変換テーブルと、を含むことを特徴とするシステム。前記ポートの識別情報と前記アドレスとが前記テーブルに登録されることを特徴とする請求項10に記載のシステム。前記ポートは、前記割当先デバイスが前記テーブルに登録される第1アプリケーションに割り当てられる第1ポートと、前記割当先デバイスが前記テーブルに登録されない第1アプリケーションに割り当てられる第2ポートとを含むことを特徴とする請求項10または請求項11に記載のシステム。前記記憶領域は、前記割当先デバイスが前記テーブルに登録されるアプリケーションに割り当てられる第1記憶領域と、前記割当先デバイスが前記テーブルに登録されないアプリケーションに割り当てられる第2記憶領域とを含むことを特徴とする請求項10乃至請求項12の何れか一に記載のシステム。しかしながら、上述した従来技術において、特許文献1にかかる技術では、デバイスの数分のメモリとメモリコントローラを要求するため、回路規模が大きくなり、製造コストが増大してしまうという問題があった。本発明は、上述した従来技術による問題点を解消するため、製造コストを増大させずに、複数のデバイスによるメモリのアクセス競合を回避できるメモリ制御方法、およびシステムを提供することを目的とする。上述した課題を解決し、目的を達成するため、本発明の一側面によれば、第1アプリ内の第1処理を実行する割当先デバイスを登録するテーブルに基づいて第1アプリ内の第1処理を割当先デバイスに割り当て、第1アプリで使用されるメモリのポートの識別情報をポート接続器に通知するとともにポート番号をテーブルに登録し、メモリポートに記憶領域を割り当てるとともに記憶領域のアドレスをデーブルに登録するメモリ制御方法は、およびシステムが提案される。本発明の一側面によれば、複数のデバイスによるメモリのアクセス競合を回避できるという効果を奏する。以下に添付図面を参照して、開示のメモリ制御方法、およびシステムの実施の形態を詳細に説明する。なお本実施の形態にかかるメモリ制御方法を実行するシステムの例として、複数のCPUを有するマルチコアプロセッサシステムにて説明を行う。マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。また、メモリ制御方法を実行するシステムは、コアが単一であるシングルコアプロセッサシステムであってもよい。図1は、マルチコアプロセッサシステム100の連携動作の様子を示す説明図である。符号101で示す説明図は、ある時刻での連携動作の様子を示した図である。符号102で示す説明図は、従来例におけるマルチコアプロセッサシステム100において、連携動作中の時刻t1と時刻t3の状態を示す説明図である。符号103で示す説明図は、本実施の形態におけるマルチコアプロセッサシステム100において、連携動作中の時刻t1と時刻t3の状態を示す説明図である。符号101で示す説明図では、アプリとして、アプリ0とアプリ1が存在し、それぞれが連携動作を行うことを想定している。具体的には、アプリ0がDBB104によるネットワークからの受信済データ121を処理し、アプリ1がCPUs105のうちCPU0からDBB104への送信対象データ122を処理する。なお、デバイス間で連携動作を行うソフトウェアであれば、アプリケーションソフトウェア以外のソフトウェアであってもよい。たとえば、OSOperatingSystemなどの基本ソフトウェアであっても、デバイス間で連携動作する処理が存在すれば、本実施の形態におけるメモリ制御方法を適用できる。アプリ0は、時刻t1にてDBB104が、ネットワークからの受信済データ121を処理開始する。時刻t2にて、CPU0が、受信済データ121に対してコーデックデコード処理の前処理を行う。時刻t3にて、GPU106がコーデック処理を行う。以降、コーデックデコード処理に対する後処理と、表示処理が発生するが、符号101で示す説明図では、以降の処理の表示を省略している。また、時刻t3にて、CPU0が、送信対象データ122を生成する。以降、コーデックエンコード処理と、コーデック処理に対する後処理、送信処理が発生するが、符号101で示す説明図では、以降の処理の表示を省略している。次に、符号102で示す説明図において、従来例におけるマルチコアプロセッサシステム100は、DBB104と、複数のCPUを含むCPUs105と、GPU106と、メモリ107と、を含む。また、各部はバス108にて接続されている。なお、DBB104と、CPUs105と、GPU106を、メモリにアクセスするデバイスと定義する。たとえば、デバイスには、DSPDigitalSignalProcessorも含まれる。またメモリ107に対する入出力ポートとして、ポート1090と、ポート1091が存在する。さらに、メモリ107は、DBB104が管理する記憶領域であるDBB管理領域110とCPUs105とGPU106が管理する記憶領域であるCPUGPU管理領域111とを含む。対象デバイスがDBB管理領域110にアクセスする場合、対象デバイスはポート1090を経由してDBB管理領域110にアクセスする。同様に、対象デバイスがCPUGPU管理領域111にアクセスする場合、対象デバイスはポート1091を経由してCPUGPU管理領域111にアクセスする。時刻t1において、DBB104は、ポート1090を経由してDBB管理領域110内に受信済データ121を書き込む。次に、時刻t2にて、CPU0が、受信済データ121をCPUGPU管理領域111にコピーした後、受信済データ121に対して前処理を実行する。続けて、時刻t3にて、GPU106が、受信済データ121に対してコーデックデコード処理を実行する。同時に、時刻t3にて、CPU0が、送信対象データ122を生成する。時刻t3では、CPU0と、GPU106が同時にポート1091にアクセスするため、アクセス競合が発生する。続けて、符号103で示す説明図において、本実施の形態におけるマルチコアプロセッサシステム100は、DBB104と、CPUs105と、GPU106と、メモリ107と、を含む。また、各部はバス108にて接続されている。さらに、本実施の形態におけるマルチコアプロセッサシステム100では、メモリ107とバス108の間にメモリコントローラ112が存在する。バス108とメモリコントローラ112間の入出力ポートとして、ポート1130とポート1131が存在し、メモリコントローラ112とメモリ107間の入出力ポートとして、ポート1140とポート1141が存在する。また、メモリ107は、ポート1130でアクセスする記憶領域1150と、ポート1131でアクセスする記憶領域1151とを含む。また、本実施の形態におけるマルチコアプロセッサシステム100では、ポート1130をアプリ0用ポートに設定し、記憶領域1150をアプリ0用領域に設定する。時刻t1において、DBB104は、アプリ0用ポートに設定されたポート1130、ポート1140を経由して、アプリ0用領域に設定された記憶領域1150内に受信済データ121を書き込む。次に、時刻t2にて、CPU0は、記憶領域1150内の受信済データ121に対してコピーをせず、記憶領域1150内の受信済データ121に対して前処理を実行する。続けて、時刻t3にて、GPU106は、ポート1130、ポート1140を経由して、記憶領域1150内の受信済データ121に対してコーデックデコード処理を実行する。同時に、時刻t3にて、CPU0が、アプリ0用ポートでないポート1131、ポート1141を経由して、アプリ0用領域でない記憶領域1151に送信対象データ122を生成する。このように、本実施の形態におけるマルチコアプロセッサシステム100は、メモリの管理領域をアプリごとに分けているため、記憶領域間のコピーが発生せず、記憶領域間のコピーを回避することができる。また、本実施の形態におけるマルチコアプロセッサシステム100は、特定のアプリが使用するポートを設定しておくことで、異なるアプリを実行中のデバイスが同一のポートにアクセスすることが発生しなくなる。これにより、本実施の形態におけるマルチコアプロセッサシステム100は、メモリに対するアクセス競合を回避することができる。なお、以降の記載において、マルチコアプロセッサシステム100について特に記述のない場合は、本実施の形態におけるマルチコアプロセッサシステム100に関する説明文である。マルチコアプロセッサシステム100のハードウェア図2は、本実施の形態にかかるマルチコアプロセッサシステム100のハードウェアとソフトウェアを示すブロック図である。図2において、マルチコアプロセッサシステム100のハードウェアは、DBB104、CPUs105と、GPU106と、LCDC201と、LCD202と、フラッシュROMコントローラ203と、フラッシュROM204、キーボード205と、を含む。各部は、バス108によってそれぞれ接続されている。さらに、マルチコアプロセッサシステム100は、メモリ107を含む。メモリ107は、メモリコントローラ112を経由してバス108に接続している。バス108とメモリコントローラ112は、ポート1130~ポート1133によって接続されており、メモリコントローラ112とメモリ107は、ポート1140~ポート1143によって接続されている。さらに、マルチコアプロセッサシステム100は、アンテナ206と、RFRadioFrequency回路207と、を含む。RF回路207は、DBB104と接続しており、アンテナ206は、RF回路207と接続している。DBB104は、RF回路207からの通知によって通話の検出を行い、通信、通話機能を担当するプロセッサである。CPUs105は、マルチコアプロセッサシステム100の全体の制御を司る。また、CPUs105は、CPU0~CPU2を含む。さらに、CPUs105は、1以上のCPUを含んでもよい。また、CPU0~CPU2は、専用のキャッシュメモリを含んでいてもよい。GPU106は、グラフィック処理に特有なコーデック処理を行う。LCDC201は、LCD202を制御して、画像データ、動画データを表示させる。たとえば、LCDC201は、VRAMVideoRandomAccessMemoryを読み込んで、LCD202に表示する。メモリ107は、主記憶装置または補助記憶装置である。具体的には、メモリ107は、ROMRead‐OnlyMemory、RAMRandomAccessMemory、フラッシュROMといった記憶装置である。ROMは、ブートプログラムなどのプログラムを記憶している。RAMは、CPUs105のワークエリアとして使用される。フラッシュROMは、OSなどのシステムソフトウェアやアプリケーションソフトウェア等の実行オブジェクトを記憶している。また、メモリ107は、ポート1140~ポート1143ごとに物理アドレス空間を分断したメモリブロック2100~メモリブロック3に分けられる。メモリブロック2100~メモリブロック2103は、物理アドレス空間が連続していてもよいし、離れていてもよい。また、メモリ107で1つのメモリバンクとして存在してもよいし、1つのメモリブロックが1つのメモリバンクとして存在してもよい。また、メモリブロック2100の物理アドレスの範囲は0x0000~0x00ffである。同様に、メモリブロック2101の物理アドレスの範囲は0x0100~0x01ffである。メモリブロック2102の物理アドレスの範囲は0x0200~0x02ffである。メモリブロック2103の物理アドレスの範囲は0x0300~0x03ffである。メモリコントローラ112は、メモリ107へのデータの読み出し、書き込みを制御する機能を有する。本実施の形態にかかるメモリコントローラ112は、メモリ107にアクセスするポート1130~ポート1133、ポート1140~ポート1143の設定を変更することで、デバイスのメモリ107へのアクセスを制御する。また、メモリコントローラ112の内部には、ポート接続器208と、アドレス変換器209を含む。ポート接続器208は、メモリコントローラ112の内部に存在し、ポート1130~ポート1133の接続、または非接続を行う。図2の例では、ポート接続器208は、ポート1132とポート1133を非接続に設定している。ポート接続器208の具体的な設定例は、図3にて後述する。アドレス変換器209は、メモリコントローラ112の内部に存在し、ポート1130~ポート1133のアドレス変換を行う。アドレス変換器209の具体的な変換例は、図4にて後述する。LCD202は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。たとえば、LCD202は、TFTThinFilmTransistor液晶ディスプレイなどを採用することができる。フラッシュROMコントローラ203は、CPUs105の制御にしたがってフラッシュROM204に対するデータのリード/ライトを制御する。フラッシュROM204は、フラッシュROMコントローラ203の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがアンテナ206を経由して取得した画像データ、映像データや、本実施の形態であるメモリ制御方法を実行するプログラムが格納されていてもよい。フラッシュROM204は、たとえば、メモリカード、SDカードなどを採用することができる。キーボード205は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード205は、タッチパネル式の入力パッドやテンキーなどであってもよい。アンテナ206は、無線信号を送受信する。RF回路207は、高周波処理部であり、アンテナ206を介してインターネットなどのネットワークからデータを受信したり、ネットワークへデータを送信したりする。ここでは、RF回路207は、AAnalog/DDigitalコンバータやD/Aコンバータなどを含んでいることとし、アンテナ206からのデータをディジタル信号に変換したり、DBB104からのデータをアナログ信号に変換したりする。次に、マルチコアプロセッサシステム100で実行されるソフトウェアは、OS211と、動画再生アプリ212と、GUIGraphicalUserInterfaceアプリ213と、を含む。また、マルチコアプロセッサシステム100の記憶領域には、アプリシナリオテーブル214が格納されている。OS211は、マルチコアプロセッサシステム100を制御するプログラムである。たとえば、OS211は、CPU0~CPU2が実行するアプリのスケジューリング処理を行う。また、OS211は、アプリが使用するライブラリを提供する。動画再生アプリ212は、ユーザがアンテナ206等から経由して取得したストリーミング動画、またはフラッシュROM204に格納してある動画データを再生するソフトウェアである。GUIアプリ213は、LCD202上にアイコンやメニューで選択項目を表示し、ユーザによるキーボード205の操作によって選択項目を選択することで、マルチコアプロセッサシステム100を操作することを可能とするソフトウェアである。アプリシナリオテーブル214は、メモリ107にアクセスするデバイスと、デバイスが実行する処理と、処理が実行される順序とを、ソフトウェアごとに記憶するテーブルである。たとえば、動画再生アプリ212が時刻t1にストリーミング動画再生要求を受け、さらに、GUIアプリ213が時刻t3に静止画像のプレビュー画像表示要求を受けた場合を想定する。このとき、動画再生アプリ212は、アプリシナリオテーブル214にしたがって、時刻t1ではDBB104で受信処理を実行し、時刻t2ではCPUs105のうちいずれかのCPUで前処理を実行し、時刻t3ではGPU106でコーデック処理を実行する。さらに、動画再生アプリ212は、時刻t4ではCPUs105のいずれかのCPUで後処理を実行し、時刻t5ではLCDC201で表示処理を実行する。また、動画再生アプリ212は、時刻t1~時刻t5間にて、ポート1130、ポート1141を経由してメモリブロック2101内の記憶領域2151にアクセスする。なお、動画再生アプリ212が扱う全データは、ファイルシステムによって、フラッシュROM204等の補助記憶装置に格納されており、全データの一部が、OS211の機能によって、メモリ107に配置される。したがって、記憶領域2151がメモリブロック2101をはみ出すことはない。また、GUIアプリ213は、アプリシナリオテーブル214にしたがって、時刻t3ではCPUs105のうちいずれかのCPUで前処理を実行し、時刻t4ではGPU106でコーデック処理を実行する。さらに、GUIアプリ213は、時刻t5ではCPUs105のうちのいずれかのCPUで後処理を実行し、時刻t6ではLCDC201で表示処理を実行する。さらに、GUIアプリ213は、時刻t3~時刻t6間にて、ポート1131、ポート1140を経由してメモリブロック2100内の記憶領域2150にアクセスする。図3は、ポート接続器208の内部を示す説明図である。ポート接続器208は、メモリコントローラ112に含まれ、バス108とアドレス変換器209の間に存在し、ポート1130~ポート1133、ポート1140~ポート1143の接続、非接続を制御する。ポート1130~ポート1133、ポート1140~ポート1143の接続、非接続は、CPU0~CPU2によってアクセスされる設定レジスタ301によって制御される。設定レジスタ301は、設定レジスタ3010~設定レジスタ3013を含み、ポート1130~ポート1133、ポート1140~ポート1143の接続、非接続を制御する。具体的には、設定レジスタ3010は、スイッチ0を制御し、ポート1130の接続、非接続を設定する。設定レジスタ3010は、設定値が使用中であればポート1130、ポート1140を接続にし、設定値が未使用であればポート1130、ポート1140を非接続にする。他の設定レジスタ301も同様に、設定レジスタ3011~設定レジスタ3013が、それぞれ、ポート1131~ポート1133、ポート1141~ポート1143の接続、非接続を行う。接続となったポートは、対象アプリによって使用中のポートとなる。また、非接続となったポートは、未使用となりポート内の結線に電力が供給されなくなる。結果、ポートが不要の場合にポートを非接続とすることで、省電力効果を得ることができる。図4は、アドレス変換器209の内部と設定方法の一例を示す説明図である。符号401で示す説明図は、アドレス変換器209の内部を示す説明図である。アドレス変換器209は、メモリコントローラ112に含まれ、ポート接続器208とメモリ107の間に存在し、ポート1130~ポート1133、ポート1140~ポート1143の論理アドレスと物理アドレスを変換する。各ポートの論理アドレスと物理アドレスの変換は、CPU0~CPU2によってアクセスされる変換レジスタ4030~変換レジスタ4033によって制御される。具体的には、変換レジスタ4030は、TLBTranslationLookasideBuffer0を制御する。制御されたTLB0は、ポート1130、ポート1140の論理アドレス空間と物理アドレス空間を変換する。同様に、変換レジスタ4031~変換レジスタ4033がTLB1~TLB3を制御することで、それぞれ、ポート1131~ポート1133、ポート1141~ポート1143の論理アドレス空間と物理アドレス空間を変換する。符号402で示す説明図は、変換レジスタ403の設定例を示す説明図である。変換レジスタ4030の設定に応じて、TLB0に設定される内容が変化する。変換レジスタ403は、論理アドレス、物理アドレス、という2つのフィールドを含む。論理アドレスフィールドは、アプリからアクセス要求される論理アドレスの値の範囲を格納する。物理アドレスフィールドは、論理アドレスに対応するメモリ107内の物理アドレスの範囲を格納する。CPUs105は、変換レジスタ403と同フィールドを有するアドレス変換テーブル404をアドレス変換器209に通知し、通知を受けたアドレス変換器209は、アドレス変換テーブル404を変換レジスタ403に設定する。アドレス変換テーブル404の設定例としては、たとえば、アドレス変換テーブル404-0~アドレス変換テーブル404-5である。たとえば、CPU0~CPU2のうちCPU0が変換レジスタ4030~変換レジスタ4033を設定すると想定する。たとえば、CPU0が、変換レジスタ4030をアドレス変換テーブル404-0に格納した場合、TLB0の設定はアドレス変換テーブル404-0となる。アドレス変換テーブル404-0には、論理アドレス空間0x0000~0x00ffを、メモリブロック2100の物理アドレス空間0x0000~0x00ffに変換するレコードが格納されている。同様に、アドレス変換テーブル404-1には、論理アドレス空間0x0000~0x00ffを、メモリブロック2101の物理アドレス空間0x0100~0x01ffに変換するレコードが格納されている。また、アドレス変換テーブル404-2には、論理アドレス空間0x0000~0x00ffを、メモリブロック2102の物理アドレス空間0x0200~0x02ffに変換するレコードが格納されている。また、アドレス変換テーブル404-3には、論理アドレス空間0x0000~0x00ffを、メモリブロック2103の物理アドレス空間0x0300~0x03ffに変換するレコードが格納されている。また、アドレス変換テーブル404-0~アドレス変換テーブル404-3では、メモリブロック210内の全ての物理アドレスを変換していたが、一部のアドレス範囲を変換してもよい。たとえば、アドレス変換テーブル404-4には、論理アドレス空間0x0000~0x003fを、メモリブロック2101の物理アドレス空間0x0180~0x01bfに変換するレコードが格納されている。同様に、アドレス変換テーブル404-5には、論理アドレス空間0x0000~0x002fを、メモリブロック2100の物理アドレス空間0x00a0~0x00cfに変換するレコードが格納されている。たとえば、変換レジスタ4030にアドレス変換テーブル404-1が設定された場合を想定する。このとき、アドレス変換器209は、ポート1130を経由したアクセスに対して、デバイスがアクセスしようとしている論理アドレスを、ポート1141を経由したメモリブロック2101内の物理アドレスに変換する。したがって、アドレス変換器209を経由してメモリ107にアクセスする対象アプリは、対象アプリ用に確保された記憶領域の物理アドレスのアドレスを意識せず、常に固定のアドレスとなる論理アドレスに対してアクセスを行うことができる。マルチコアプロセッサシステム100の機能次に、マルチコアプロセッサシステム100の機能について説明する。図5は、マルチコアプロセッサシステム100の機能を示すブロック図である。マルチコアプロセッサシステム100は、検出部501と、割当部502と、決定部503と、制御部504と、登録部505と、を含む。この制御部となる機能検出部501~登録部505は、記憶装置に記憶されたプログラムをCPUs105が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、メモリ107、フラッシュROM204などである。また、図5に示すアプリシナリオテーブル214は、CPU0内に記載されているが、マルチコアプロセッサシステム100起動時には、メモリ107、フラッシュROM204といった記憶装置に記憶されている。図5ではマルチコアプロセッサシステム100起動後に、アプリシナリオテーブル214は、CPU0のキャッシュメモリにコピーされた状態を想定している。なお、図5に示す検出部501~登録部505は、CPU0の機能として表示されているが、CPUs105のうち他のCPUの機能であってもよい。検出部501は、第1アプリが起動されることを検出する機能を有する。たとえば、検出部501は、アプリ0が起動されることを検出する。なお、検出されたという情報は、CPU0のレジスタ、キャッシュメモリなどの記憶領域に記憶される。割当部502は、第1アプリで使用されるメモリ107へのポートを割り当てるとともに、ポートに対応する記憶領域を割り当てる機能を有する。たとえば、割当部502は、アプリ0で使用されるポートを、ポート113のうちポート1131に割り当てつつ、アプリ0が使用する記憶領域として、記憶領域2150を割り当てる。なお、割り当てられたポートの識別情報、記憶領域のアドレス等は、CPU0のレジスタ、キャッシュメモリなどの記憶領域に記憶される。また、割当部502は、検出部501によって検出された第1アプリがアプリシナリオテーブル214に登録されている場合、ポート113のうちシナリオ情報が有るアプリ用の第1ポートを割り当ててもよい。また、割当部502は、検出部501によって検出された第1アプリがアプリシナリオテーブル214に登録されていない場合、ポート113のうちシナリオ情報が無いアプリ用の第2ポートを割り当ててもよい。なお、シナリオ情報とは、対象アプリが実行される際の処理順序に関する情報である。シナリオ情報の具体的な詳細については、図7にて説明する。同様に、割当部502は、第1アプリがアプリシナリオテーブル214に登録されている場合、メモリ107の記憶領域のうちシナリオ情報が有るアプリ用の第1記憶領域を割り当ててもよい。また、割当部502は、第1アプリがアプリシナリオテーブル214に登録されていない場合、メモリ107の記憶領域のうちシナリオ情報が無いアプリ用の第2記憶領域を割り当ててもよい。たとえば、マルチコアプロセッサシステム100は、シナリオ情報が有るアプリ用の第1ポートとしてポート1130、ポート1131を設定し、シナリオ情報が無いアプリ用の第2ポートとしてポート1132、ポート1133を設定しておいてもよい。割当部502は、設定内容にしたがって、シナリオ情報が有るアプリに対しては、ポート1130、ポート1131のうちいずれか一つのポートを割り当てる。また、割当部502は、シナリオ情報が無いアプリに対しては、ポート1132、ポート1133のうちいずれか一つのポートを割り当てる。また、割当部502は、第1アプリがシナリオ情報が有るアプリである場合、未使用の第1ポートが存在するか否かを判断する。続けて、割当部502は、未使用の第1ポートが存在する場合に未使用の第1ポートを割り当て、未使用の第1ポートが存在しない場合に第2ポートを割り当ててもよい。たとえば、ポート1130、ポート1131が、シナリオ情報が有る他のアプリによって使用中である場合を想定する。このとき、割当部502は、第1アプリがシナリオ情報が有るアプリである場合、未使用の第1ポートが存在しないと判断し、第2ポートを割り当てる。なお、割り当てられたポート、記憶領域は、アプリシナリオテーブル214に記憶されるほか、CPU0のレジスタ、キャッシュメモリなどの記憶領域に記憶されてもよい。決定部503は、第1アプリ内の第1処理を実行する割当先デバイスを登録するアプリシナリオテーブル214に基づいて第1アプリ内の第1処理に割当先デバイスを割り当てることを決定する機能を有する。たとえば、決定部503は、アプリシナリオテーブル214のレコード群から起動を検出したアプリ0のレコードを参照し、第1処理を実行する割当先デバイスとしてDBB104を割り当てることを決定する。また、決定部503は、第1アプリ内の第1処理を実行する割当先デバイスがアプリシナリオテーブル214に登録されていないとき、第1アプリを負荷が最小であるデバイスに割り当ててもよい。なお、決定されたデバイスの識別情報は、CPU0のレジスタ、キャッシュメモリなどの記憶領域に記憶される。なお、デバイスの負荷の算出方法として、CPU0が、単位時間あたりのデバイスの実行時間の比率を負荷として算出する。また、別の算出方法として、CPU0が、デバイスに割り当てられている処理数に基づいて、算出してもよい。または、デバイスに割り当てられている処理に付与されている処理情報の合計を、デバイスの負荷として算出してもよい。なお、処理情報は、事前に各処理を計測しておく。制御部504は、決定部503に決定された割当先デバイスが割当部502によって割り当てられたポートを経由して割当部502によって割り当てられた記憶領域にアクセスするようにメモリコントローラ112を制御する機能を有する。たとえば、割当部502によって、ポート1131と、記憶領域2150が割り当てられた場合を想定する。このとき、制御部504は、ポート1131が使用されるようにポート接続器208を制御しつつ、ポート1131のアクセス先が記憶領域2150となるようにアドレス変換器209を制御する。具体的に、制御部504は、ポート接続器208の設定レジスタ3011を使用中に設定する。続けて、制御部504は、割当先デバイスがアクセスする論理アドレスとメモリ107内の記憶領域の物理アドレスとを変換するアドレス変換テーブル404-5をアドレス変換器209の変換レジスタ4031に設定する。また、制御部504は、対象デバイスにて、第1アプリから第2アプリに切り替わるとき、アプリシナリオテーブル214から、第2アプリに対応するポートの識別情報を取得して、ポート接続器208に通知してもよい。たとえば、制御部504は、DBB104に対して、アプリ0からアプリ1に切り替わった場合、アプリ1に対応するポートの識別情報を取得して、ポート接続器208に通知する。なお、制御部504は、対象デバイスが割り当てられたポートを経由してアクセスするようにメモリコントローラ112を制御する機能を有しているが、対象デバイスがメモリコントローラ112を制御するように、対象デバイスを制御してもよい。登録部505は、割当部502によって割り当てられたポートおよび記憶領域のアドレスを、アプリシナリオテーブル214に登録する機能を有する。たとえば、登録部505は、割当部502によって割り当てられたポート1131と、記憶領域2150のアドレスをアプリシナリオテーブル214のアプリ0のレコード内に登録する。また、登録部505は、第1アプリを実行中に、メモリ107へのアクセス回数、およびデバイスの使用回数を記録し、アクセス回数、使用回数、および第1アプリの処理負荷に基づいて第1アプリをアプリシナリオテーブル214に登録してもよい。たとえば、登録部505は、メモリ107へのアクセス回数とデバイスの使用回数が所定の閾値以上である場合に、アプリシナリオテーブル214に登録する。このように、マルチコアプロセッサシステム100は、メモリ107と、メモリ107に対して入出力を行うポートを複数有するメモリコントローラ112と、メモリ107にアクセス可能なデバイス群と、を含むシステムである。そして、マルチコアプロセッサシステム100は、デバイスが実行する処理をアプリごとに記憶するアプリシナリオテーブル214に基づいて、対象アプリの起動を検出する。対象アプリの起動が検出された場合、マルチコアプロセッサシステム100は、ポート1030~ポート1033のうち未使用のポートを対象アプリが使用するポートとして割り当てつつ、メモリ107のうち対象アプリが使用する記憶領域を割り当てる。割当後、マルチコアプロセッサシステム100は、アプリシナリオテーブル214を参照して、対象アプリに対応する処理が割り当てられるデバイスを割当先デバイスに決定する。決定後、マルチコアプロセッサシステム100は、決定された割当先デバイスが割り当てられたポートを経由して、割り当てられた記憶領域にアクセスするようにメモリコントローラ112を制御する。また、マルチコアプロセッサシステム100は、割当先デバイスを、割り当てられたポートに対応する記憶領域にアクセスするように制御してもよい。また、処理が複数存在する場合、アプリシナリオテーブル214は、複数の処理と複数の処理を実行するデバイスと複数の処理が実行される順序とを、アプリごとに記憶してもよい。アプリシナリオテーブル214に基づいて、マルチコアプロセッサシステム100は、対象アプリにおいて複数の処理のうち特定の処理が完了したことが検出された場合、特定の処理の次の処理を実行するデバイスを割当先デバイスに決定してもよい。図6は、ポート113とポート114とメモリブロック210の設定例を示す説明図である。図6で示す説明図では、アプリシナリオテーブル214のシナリオ情報が有るアプリか否かに基づいて、ポート113、ポート114、メモリブロック210のうち、使用するポートと、使用される記憶領域を設定する例を示している。なお、シナリオ情報については、図7にて後述する。マルチコアプロセッサシステム100は、たとえば、符号601で示される範囲のポート113とメモリブロック210をシナリオ情報が有るアプリ用のポートおよび記憶領域として設定する。具体的に、マルチコアプロセッサシステム100は、ポート1130~ポート1133のうち、ポート1130とポート1131を、シナリオ情報が有るアプリ用のポートとして設定する。また、マルチコアプロセッサシステム100は、メモリブロック2100~メモリブロック2103のうち、メモリブロック2100とメモリブロック2101をシナリオ情報が有るアプリ用の記憶領域として設定する。たとえば、マルチコアプロセッサシステム100は、動画再生アプリ212が使用するポートを1130に設定し、動画再生アプリ212がアクセスする記憶領域をメモリブロック2101に設定する。なお、動画再生アプリ212は、メモリブロック2101の中から、動画再生アプリ212が使用する記憶領域2151を確保する。同様に、マルチコアプロセッサシステム100は、GUIアプリ213が使用するポートを1131に設定し、GUIアプリ213がアクセスする記憶領域をメモリブロック2100に設定する。なお、GUIアプリ213は、メモリブロック2100の中から、GUIアプリ213が使用する記憶領域2150を確保する。また、マルチコアプロセッサシステム100は、符号602で示される範囲のポート113とメモリブロック210をシナリオ情報が無いアプリ用のポートおよび記憶領域として設定する。具体的に、マルチコアプロセッサシステム100は、ポート1132とポート1133を、シナリオ情報が無いアプリ用のポートとして設定する。また、マルチコアプロセッサシステム100は、メモリブロック2100~メモリブロック2103のうち、メモリブロック2102とメモリブロック2103をシナリオ情報が無いアプリ用の記憶領域として設定する。なお、マルチコアプロセッサシステム100は、シナリオ情報が無いアプリ用の記憶領域として、メモリブロック2102とメモリブロック2103を結合した、メモリブロック2102-3を設定してもよい。たとえば、図6の例では、マルチコアプロセッサシステム100にて、シナリオ情報が無いアプリが6つあり、前述のアプリがアクセスする記憶領域として、記憶領域6030~記憶領域6035が確保されている。図7は、アプリシナリオテーブル214の記憶内容の一例を示す説明図である。アプリシナリオテーブル214は、対象アプリが実行される際の情報となる処理実行情報をアプリごとに記憶する。処理実行情報は、シナリオ情報、使用ポート、先頭物理アドレスという3つの項目を含む。シナリオ情報は、対象アプリが実行される際の処理順序に関する情報である。具体的に、シナリオ情報には、シナリオ情報が有りか無しかを示す識別子が格納される。シナリオ情報が有りとして登録されている場合、シナリオ情報は、さらに、順序、処理、対象デバイス、という3つのフィールドを含むシナリオ情報テーブル701を含む。なお、シナリオ情報は、対象アプリが実行される前に生成されている。さらに、対象アプリによるメモリ107へのアクセス頻度、またはデバイスの使用回数が少ない場合、デバイス間のアクセス競合、またはコピー処理が発生せず、マルチコアプロセッサシステム100は、本実施のメモリ制御方法を行わなくともよくなる。したがって、このような場合、対象アプリのシナリオ情報が、無しとして登録されてもよい。順序フィールドには、処理が呼び出される順番が格納されている。処理フィールドには、処理内容を示す情報が格納されている。具体的に、処理フィールドには、関数名、関数への先頭アドレスといった値が格納されている。対象デバイスフィールドには、処理フィールドにて指定された処理によって実行されるデバイスの識別情報が格納されている。また、対象デバイスフィールドには、CPUs105が処理フィールドに格納された処理を実行することで、頻繁に呼び出されるデバイスを設定してもよい。使用ポートには、ポート1130~ポート1133のうち、対象アプリに設定されたポートの識別情報が格納される。ポートの識別情報とは、たとえば、ポート番号といった、ポート113を一意に特定できる情報である。先頭物理アドレスには、対象アプリに割り当てられた記憶領域の物理アドレスの先頭値が格納される。なお、使用ポート、先頭物理アドレスは、対象アプリが実行開始する際に設定される。たとえば、図7に示すアプリシナリオテーブル214には、アプリ0~アプリNが登録されている。Nは2以上の整数である。さらに、図7に示すアプリシナリオテーブル214の状態は、マルチコアプロセッサシステム100にて、アプリ0、アプリ1が実行中である状態であることを想定している。アプリ0~アプリ2は、シナリオ情報有りで登録されており、シナリオ情報に、それぞれ、シナリオ情報テーブル7010~シナリオ情報テーブル7012を含む。また、アプリNは、シナリオ情報無しで登録されており、シナリオ情報にシナリオ情報テーブル701を含まない。この状態で、アプリ0は、シナリオ情報に沿って、処理の1番目としてDBB104がfuncAを実行し、処理の2番目として、CPUs105のいずれかのCPUがfuncBを実行する。さらに、アプリ0は、処理の3番目として、GPU106がfuncCを実行し、処理の4番目として、CPUs105のいずれかのCPUがfuncDを実行し、処理の5番目として、LCDC201がfuncEを実行する。また、アプリ0は、ポート113のうち、使用ポートとして、ポート1130が設定されており、メモリ107の物理アドレスとして0x0180が割り当てられている。また、アプリ1は、シナリオ情報に沿って、処理の1番目としてCPUs105のいずれかのCPUがfuncFを実行し、処理の2番目として、GPU106がfuncGを実行する。さらに、アプリ0は、処理の3番目として、CPUs105のいずれかのCPUがfuncHを実行し、処理の4番目として、LCDC201がfuncIを実行する。また、アプリ1は、ポート113のうち、使用ポートとして、ポート1131が設定されており、メモリ107の物理アドレスとして0x00a0が割り当てられている。また、アプリ2が実行する場合は、シナリオ情報にしたがって、処理の1番目としてCPUs105のいずれかのCPUがfuncJを実行し、処理を続行して、処理のn番目として、LCDC201がfuncKを実行することになる。nは、1以上の整数である。なお、アプリ2は実行開始されていないため、使用ポートと先頭物理アドレスには値が設定されていない。また、アプリNは、シナリオ情報無しとして登録されたアプリである。アプリNが実行される場合、アプリシナリオテーブル214の使用ポートは設定されず、アプリNは、図6で示したシナリオ情報が無いアプリ用のポートの一つを使用してメモリ107にアクセスする。アプリNのシナリオ情報は、無しを示す識別子で登録される。また、先頭物理アドレスは、図6で示したシナリオ情報が無いアプリ用の記憶領域から確保された物理アドレスの先頭が設定される。以降、図8~図13にて、図7で示したアプリシナリオテーブル214にしたがってアプリ0とアプリ1が実行する場合の状態を示す。アプリ0が実行開始要求を受け、順序1の処理を実行する時刻を時刻t1と想定する。同様に、順序2の処理を実行する時刻を時刻t2と想定し、順序3の処理を実行する時刻を時刻t3と想定し、順序4の処理を実行する時刻を時刻t4と想定し、順序5の処理を実行する時刻を時刻t5と想定する。さらに、アプリ1が時刻t3に実行開始要求を受け、順序1の処理を実行することを想定する。同様に、アプリ1が時刻t4に順序2の処理を実行することを想定し、時刻t5に順序3の処理を実行することを想定する。また、アプリ1が順序4の処理を実行する時刻を時刻t6と想定する。また、図8~図13にて、アプリシナリオテーブル214に付随する接尾記号_txは、時刻txでのアプリシナリオテーブル214の内容を示している。また、アプリ0とアプリ1によって実行される処理のうち、CPUs105によって実行される処理は、CPUs105のうち、CPU0によって実行される場合を想定する。なお、CPUs105のうち最も負荷の低いCPUが、CPUs105によって実行される処理を実行してもよい。また、シナリオ情報が有るアプリ用のポートの使用状況については、アプリシナリオテーブル214にて記憶されているため、どのポートが未使用であるか判断できる。したがって、マルチコアプロセッサシステム100は、未使用のポートに関しては非接続にすることで、消費電力を削減することができる。シナリオ情報が無いアプリ用のポートの使用状況については、アプリシナリオテーブル214にて記憶しておらず、どのポートが未使用であるか判断できないために、ポート接続器208は、シナリオ情報が無いアプリ用のポートを常に使用中に設定する。なお、マルチコアプロセッサシステム100は、シナリオ情報が無いアプリ用のポートの使用状況も記憶するようにした上で、シナリオ情報が無いアプリ用のポートのうち、使用されていないポートを未使用に設定してもよい。図8は、アプリシナリオテーブル214の動作に従ったマルチコアプロセッサシステム100における時刻t1の状態を示す説明図である。時刻t1にて、アプリ0が実行開始要求を受けると、マルチコアプロセッサシステム100は、使用ポートとして、シナリオ情報が有るアプリ用のポートからポート1130を選択する。選択後、マルチコアプロセッサシステム100は、ポート接続器208にポート1130の使用を通知する。通知を受けたポート接続器208は、設定レジスタ3010を使用中に設定する。さらに、マルチコアプロセッサシステム100は、シナリオ情報が有るアプリ用の記憶領域から、メモリブロック2101を選択する。続けて、マルチコアプロセッサシステム100は、メモリブロック2101の空き領域として、記憶領域801をアプリ0に割り当てる。なお、記憶領域801の物理アドレス範囲を、アドレス変換テーブル404-4の物理アドレスフィールドに設定された値であると想定する。割当後、マルチコアプロセッサシステム100は、アドレス変換テーブル404-4をアドレス変換器209に通知する。通知を受けたアドレス変換器209は、変換レジスタ4030を、アドレス変換テーブル404-4に設定する。設定後、マルチコアプロセッサシステム100は、設定されたポート1130、割り当てられた記憶領域801の先頭アドレス0x0180を、アプリシナリオテーブル214に登録する。登録した結果、アプリシナリオテーブル214の値は、アプリシナリオテーブル214_t1で示す内容となる。前述の設定により、時刻t1におけるDBB104は、アプリ0のfuncAを実行し、ポート1130を経由して、メモリブロック2101内の記憶領域801にアクセスする。図9は、アプリシナリオテーブル214の動作に従ったマルチコアプロセッサシステム100における時刻t2の状態を示す説明図である。時刻t2にて、アプリ0がCPUs105のうちCPU0に割り当てられた場合、マルチコアプロセッサシステム100は、ポート接続器208にポート1130の使用を通知し、アドレス変換テーブル404-4をアドレス変換器209に通知する。通知を受けたポート接続器208は、設定レジスタ3010を使用中に設定する。同じく通知を受けたアドレス変換器209は、変換レジスタ4030を、アドレス変換テーブル404-4に設定する。また、アプリシナリオテーブル214_t2はアプリシナリオテーブル214_t1と等しい内容となる。なお、時刻t2は、時刻t1以後の時刻となるが、時刻t1の直後でなくてもよい。時刻t2が時刻t1の直後でない場合、時刻t1と時刻t2の間に、他のアプリの実行によって、設定レジスタ3010と変換レジスタ4030の設定値が変更されている可能性がある。したがって、マルチコアプロセッサシステム100は、時刻t2にて再度、ポート1130の使用とアドレス変換テーブル404-4を通知する。もし、時刻t2が時刻t1の直後である場合、マルチコアプロセッサシステム100は、再通知を行わなくてよい。前述の設定により、時刻t2におけるCPU0は、アプリ0のfuncBを実行し、ポート1130を経由して、メモリブロック2101内の記憶領域801にアクセスする。このように、マルチコアプロセッサシステム100は、記憶領域801に記憶されたデータを転送せずに、データをDBB104の管理領域からCPUs105の管理領域に転送したことと同じ効果を生むことができる。図10は、アプリシナリオテーブル214の動作に従ったマルチコアプロセッサシステム100における時刻t3の状態を示す説明図である。時刻t3にて、アプリ0がGPU106に割り当てられた場合、マルチコアプロセッサシステム100は、ポート接続器208にポート1130の使用を通知し、アドレス変換テーブル404-4をアドレス変換器209に通知する。通知を受けたポート接続器208は、設定レジスタ3010を使用中に設定する。同じく通知を受けたアドレス変換器209は、変換レジスタ4030を、アドレス変換テーブル404-4に設定する。さらに、時刻t3にて、アプリ1が実行開始要求を受けると、マルチコアプロセッサシステム100は、使用ポートとして、シナリオ情報が有るアプリ用のポートからポート1131を選択する。選択後、マルチコアプロセッサシステム100は、ポート接続器208にポート1131の使用を通知する。通知を受けたポート接続器208は、設定レジスタ3011を使用中に設定する。さらに、マルチコアプロセッサシステム100は、シナリオ情報が有るアプリ用の記憶領域から、メモリブロック2100を選択する。続けて、マルチコアプロセッサシステム100は、メモリブロック2100の空き領域として、記憶領域1001をアプリ1に割り当てる。なお、記憶領域801の物理アドレス範囲を、アドレス変換テーブル404-5の物理アドレスフィールドに設定された値であると想定する。割当後、マルチコアプロセッサシステム100は、アドレス変換テーブル404-5をアドレス変換器209に通知する。通知を受けたアドレス変換器209は、変換レジスタ4031を、アドレス変換テーブル404-5に設定する。マルチコアプロセッサシステム100は、設定されたポート1131、割り当てられた記憶領域1001の先頭アドレス0x00a0を、アプリシナリオテーブル214に登録する。登録した結果、アプリシナリオテーブル214の内容は、アプリシナリオテーブル214_t3のようになる。前述の設定により、時刻t3におけるGPU106は、アプリ0のfuncCを実行し、ポート1130を経由して、メモリブロック2101内の記憶領域801にアクセスする。また、時刻t3におけるCPU0は、アプリ1のfuncFを実行し、ポート1131を経由して、メモリブロック2100内の記憶領域1001にアクセスする。このように、マルチコアプロセッサシステム100は、GPU106とCPU0が別々のポート、別々の記憶領域にアクセスするため、アクセス競合を回避することができる。また、時刻t3におけるマルチコアプロセッサシステム100は、時刻t2におけるマルチコアプロセッサシステム100と同様に、記憶領域801に記憶されたデータの転送を行わなくてよい。図11は、アプリシナリオテーブル214の動作に従ったマルチコアプロセッサシステム100における時刻t4の状態を示す説明図である。時刻t4にて、アプリ0がCPUs105のうちCPU0に割り当てられた場合、マルチコアプロセッサシステム100は、ポート接続器208にポート1130の使用を通知し、アドレス変換テーブル404-4をアドレス変換器209に通知する。通知を受けたポート接続器208は、設定レジスタ3010を使用中に設定する。同じく通知を受けたアドレス変換器209は、変換レジスタ4030を、アドレス変換テーブル404-4に設定する。同様に、時刻t4にて、アプリ1がGPU106に割り当てられた場合、マルチコアプロセッサシステム100は、ポート接続器208にポート1131の使用を通知し、アドレス変換テーブル404-5をアドレス変換器209に通知する。通知を受けたポート接続器208は、設定レジスタ3011を使用中に設定する。同じく通知を受けたアドレス変換器209は、変換レジスタ4031を、アドレス変換テーブル404-5に設定する。また、アプリシナリオテーブル214_t4はアプリシナリオテーブル214_t3と等しい内容となる。前述の設定により、時刻t4におけるCPU0は、アプリ0のfuncDを実行し、ポート1130を経由して、メモリブロック2101内の記憶領域801にアクセスする。また、時刻t4におけるGPU106は、アプリ1のfuncGを実行し、ポート1131を経由して、メモリブロック2100内の記憶領域1001にアクセスする。このように、マルチコアプロセッサシステム100は、CPU0とGPU106が別々のポート、別々の記憶領域にアクセスするため、アクセス競合を回避することができる。また、時刻t4におけるマルチコアプロセッサシステム100は、時刻t3におけるマルチコアプロセッサシステム100と同様に、記憶領域801に記憶されたデータおよび記憶領域1001に記憶されたデータの転送を行わなくてよい。図12は、アプリシナリオテーブル214の動作に従ったマルチコアプロセッサシステム100における時刻t5の状態を示す説明図である。時刻t5にて、LCDC201に割り当てられた場合、マルチコアプロセッサシステム100は、ポート接続器208にポート1130の使用を通知し、アドレス変換テーブル404-4をアドレス変換器209に通知する。通知を受けたポート接続器208は、設定レジスタ3010を使用中に設定する。同じく通知を受けたアドレス変換器209は、変換レジスタ4030を、アドレス変換テーブル404-4に設定する。また、LCDC201がfuncEの終了後、ポートおよび記憶領域の解放を行う。解放の処理については、図13にて説明を行う。同様に、時刻t5にて、アプリ1がCPUs105のうちCPU0に割り当てられた場合、マルチコアプロセッサシステム100は、ポート接続器208にポート1131の使用を通知し、アドレス変換テーブル404-5をアドレス変換器209に通知する。通知を受けたポート接続器208は、設定レジスタ3011を使用中に設定する。同じく通知を受けたアドレス変換器209は、変換レジスタ4031を、アドレス変換テーブル404-5に設定する。また、アプリシナリオテーブル214_t5はアプリシナリオテーブル214_t4と等しい内容となる。前述の設定により、時刻t5におけるLCDC201は、アプリ0のfuncEを実行し、ポート1130を経由して、メモリブロック2101内の記憶領域801にアクセスする。また、時刻t5におけるCPU0は、アプリ1のfuncHを実行し、ポート1131を経由して、メモリブロック2100内の記憶領域1001にアクセスする。このように、マルチコアプロセッサシステム100は、LCDC201とCPU0が別々のポート、別々の記憶領域にアクセスするため、アクセス競合を回避することができる。また、時刻t5におけるマルチコアプロセッサシステム100は、時刻t4におけるマルチコアプロセッサシステム100と同様に、記憶領域801に記憶されたデータおよび記憶領域1001に記憶されたデータの転送を行わなくてよい。図13は、アプリシナリオテーブル214の動作に従ったマルチコアプロセッサシステム100における時刻t6の状態を示す説明図である。時刻t5の終了後、アプリ0が終了すると、マルチコアプロセッサシステム100は、使用ポートとしていたポート1130の解放をポート接続器208に通知する。通知を受けたポート接続器208は、設定レジスタ3010を未使用に設定する。さらに、マルチコアプロセッサシステム100は、アプリ0に割り当てられていた記憶領域801を解放する。また、時刻t6にて、アプリ1がLCDC201に割り当てられた場合、マルチコアプロセッサシステム100は、ポート接続器208にポート1131の使用を通知し、アドレス変換テーブル404-5をアドレス変換器209に通知する。通知を受けたポート接続器208は、設定レジスタ3011を使用中に設定する。同じく通知を受けたアドレス変換器209は、変換レジスタ4031を、アドレス変換テーブル404-5に設定する。前述の設定により、時刻t6におけるLCDC201は、アプリ1のfuncIを実行し、ポート1131を経由して、メモリブロック2100内の記憶領域1001にアクセスする。アプリ0によるポートと記憶領域の解放後、マルチコアプロセッサシステム100は、解放されたポート1130、解放された記憶領域801を、アプリシナリオテーブル214から消去する。消去された結果、アプリシナリオテーブル214は、アプリシナリオテーブル214_t6で示す内容となる。以降、図14~図19にて、アプリシナリオテーブル214の生成処理と、アプリシナリオテーブル214に応じたメモリ制御処理のフローチャートを示す。アプリシナリオテーブル214の生成処理の実行主体とメモリ制御処理の実行主体は、CPUs105のどのCPUでもよいが、図14~図19では、説明の簡略化のため、CPU0が実行すると想定する。なお、アプリシナリオテーブル214は、図14で示す生成処理によって生成されてもよいし、設計者によってあらかじめ生成されていてもよい。また、アプリシナリオテーブル214の生成処理は対象アプリが起動された場合に実行される。メモリ制御処理は、対象アプリが起動された場合、複数のデバイスのうちいずれか一つとなる対象デバイスにて他のアプリに切り替わった場合、または対象デバイスに割り当てられた対象アプリの関数の処理が終了した場合、のいずれかが発生した場合に実行される。図14は、アプリシナリオテーブル214の生成処理を示すフローチャートである。CPU0は、対象アプリが起動したか否かを判断するステップS1401。対象アプリが起動していない場合ステップS1401:No、CPU0は、再びステップS1401の処理に移行する。アプリが起動した場合ステップS1401:Yes、CPU0は、アプリシナリオテーブル214に対象アプリにシナリオ情報が存在するか、またはシナリオ情報無しと登録されているか否かを判断するステップS1402。シナリオ情報が存在する、または、シナリオ情報無しと登録されている場合ステップS1402:Yes、CPU0は、メモリ制御処理を実行するステップS1403。なお、シナリオ情報が存在する場合とは、アプリシナリオテーブル214に対象アプリの処理実行情報が存在する場合である。したがって、アプリシナリオテーブル214に対象アプリの処理実行情報が存在しない場合、シナリオ情報が存在しないことになる。また、シナリオ情報無しと登録されている場合とは、アプリシナリオテーブル214の対象アプリのシナリオ情報に、無しとして登録されている場合である。シナリオ情報が存在しない場合ステップS1402:No、CPU0は、対象アプリの関数ごとに、メモリ107へのアクセス回数、処理負荷、デバイスの呼び出し回数を記録するステップS1404。なお、処理負荷とは、対象アプリがデバイスに割り当てられた単位時間当たりの割合でもよいし、あらかじめ、プロファイル等で測定した値であってもよい。記録後、CPU0は、メモリ107へのアクセス回数が閾値より大きいか否かを判断するステップS1405。アクセス回数が閾値以下の場合ステップS1405:No、CPU0は、シナリオ情報無しとしてアプリシナリオテーブル214に登録するステップS1410。アクセス回数が閾値より大きい場合ステップS1405:Yes、CPU0は、続けて、処理負荷が閾値より大きいか否かを判断するステップS1406。処理負荷が閾値以下の場合ステップS1406:No、CPU0は、ステップS1410の処理に移行する。処理負荷が閾値より大きい場合ステップS1406:Yes、CPU0は、さらに、対象アプリの関数が同一のデバイスを複数回呼び出しているか、または、複数のデバイスを呼び出しているか否かを判断するステップS1407。単一のデバイスに対し1度以下の呼び出ししかしていない場合ステップS1407:No、CPU0は、ステップS1410の処理に移行する。同一のデバイスを複数回、または、複数のデバイスを呼び出している場合ステップS1407:Yes、CPU0は、アプリシナリオテーブル214にシナリオ情報有りとして登録するステップS1408。続けて、CPU0は、シナリオ情報テーブル701の対象アプリのレコード内の、順序フィールドに対象の関数が実行される順番を設定し、処理フィールドに対象の関数を設定し、対象デバイスフィールドに呼び出されたデバイスを設定するステップS1409。また、ステップS1403、ステップS1409、またはステップS1410の終了後、CPU0は、アプリシナリオテーブル214の生成処理を終了する。再び対象アプリが起動された場合、CPU0は、ステップS1401:Yesのルートを処理する。なお、ステップS1405、ステップS1406の処理における閾値については、たとえば、単位時間当たりにおける閾値であってもよい。たとえば、対象アプリの実行時間が0.5[秒]であり、ステップS1404にて記録したアクセス回数が700回、ステップS1405における閾値が1000[回/秒]である場合を想定する。このとき、CPU0は、ステップS1405の処理を、700/0.5=1400>1000から、Yesとみなし、Yesの処理を続行する。CPU0は、処理負荷についてもアクセス回数と同様に算出する。図15は、メモリ制御処理を示すフローチャートその1である。CPU0は、イベント発生したか否かを判断するステップS1501。対象アプリ起動イベントが発生した場合ステップS1501:対象アプリ起動、CPU0は、対象アプリのシナリオ情報が有りで登録されているか否かを判断するステップS1502。シナリオ情報が有りで登録されている場合ステップS1502:Yes、CPU0は、シナリオ情報テーブル701に沿って、割当先デバイスを決定するステップS1503。決定後、CPU0は、割当先デバイスがCPUs105か否かを判断するステップS1504。割当先デバイスがCPUs105である場合ステップS1504:Yes、CPU0は、負荷最小のCPUを割当先デバイスに決定するステップS1505。割当先デバイスがCPUs105でない場合ステップS1504:No、または、負荷最小のCPUを割当先デバイスに決定した場合、CPU0は、実行中アプリの処理を停止させ、実行中アプリのコンテキストを保存するステップS1506。なお、コンテキストとは、CPUのレジスタの値となるプログラムカウンタ、スタックポインタなどといったアプリが使用するデータである。また、シナリオ情報が存在しない、または、シナリオ情報が無しと登録されている場合ステップS1502:No、CPU0は、負荷最小のCPUを割当先デバイスに決定するステップS1507。決定後、CPU0は、実行中アプリの処理を停止させ、実行中アプリのコンテキストを保存するステップS1508。ステップS1506の終了後、CPU0は、シナリオ情報が有るアプリ用のポートの中に未使用のポートが存在するか否かを判断するステップS1509。なお、未使用のポートが存在するか否かの判断方法として、たとえば、CPU0がアプリシナリオテーブル214に登録された使用ポートを確認することで、未使用のポートが存在するか否か判断することができる。未使用のポートが存在する場合ステップS1509:Yes、CPU0は、図16に示すステップS1601の処理に移行する。未使用のポートが存在しない場合ステップS1509:No、または、ステップS1508の処理を終了後、CPU0は、図16に示すステップS1606の処理に移行する。また、アプリ切り替えイベントが発生した場合ステップS1501:アプリ切り替え、CPU0は、図17に示すステップS1701の処理に移行する。同様に、対象アプリ内の関数の処理終了イベントが発生した場合ステップS1501:アプリ内関数処理終了、CPU0は、図18に示すステップS1801の処理に移行する。イベントが発生していない場合ステップS1501:イベント未発生、CPU0は、再びステップS1501の処理に移行する。図16は、メモリ制御処理を示すフローチャートその2である。ステップS1509:Yesの処理を終了後、CPU0は、ポート接続器208に空きポートの割当を通知するステップS1601。通知を受けたポート接続器208は、通知されたポートに対応する設定レジスタ301を使用中に設定しステップS1602、通知元に完了通知を送信するステップS1603。完了通知を受けたCPU0は、割り当てたポートの識別情報をアプリシナリオテーブル214に登録するステップS1604。登録後、CPU0は、シナリオ情報が有るアプリ用の記憶領域から、空き記憶領域を割り当てるステップS1605。ステップS1509:No、またはステップS1508の処理を終了後、CPU0は、ポート接続器208にシナリオ情報が無いアプリ用のポートの割当を通知するステップS1606。なお、ステップS1606の処理後、ポート接続器208がステップS1602、ステップS1603を実行するが、ポート接続器208で実行される処理が同一であるため、ここでは省略している。通知後、CPU0は、シナリオ情報が無いアプリ用の記憶領域から、空き記憶領域を割り当てるステップS1607。ステップS1605、または、ステップS1607の処理を終了後、CPU0は、割り当てた記憶領域の先頭アドレスをアプリシナリオテーブル214に登録するステップS1608。登録後、CPU0は、アドレス変換器209に、割り当てた記憶領域の物理アドレスを論理アドレスに変換するアドレス変換テーブルを通知するステップS1609。なお、通知内容には、割り当てられたポートの識別情報も含まれる。通知を受けたアドレス変換器209は、アドレス変換テーブルを、割り当てられたポートに対応する変換レジスタ403に設定しステップS1610、通知元に完了通知を送信するステップS1611。完了通知を受けたCPU0は、対象アプリの実行開始を割当先デバイスに通知しステップS1612、ステップS1501の処理に移行する。図17は、メモリ制御処理を示すフローチャートその3である。特定のデバイスにてアプリ切り替えイベントが発生した場合ステップS1501:アプリ切り替え、CPU0は、切り替え後に実行されるアプリのシナリオ情報が有りで登録されているか否かを判断するステップS1701。シナリオ情報が存在しない、またはシナリオ情報が無しで登録されている場合ステップS1701:No、CPU0は、シナリオ情報が無いアプリ用のポートを割り当てるステップS1702。割当後、または切り替え後に実行されるアプリのシナリオ情報が有りで登録されている場合ステップS1701:Yes、CPU0は、切り替え後に実行するアプリの接続ポートをポート接続器208に通知するステップS1703。通知後、CPU0は、実行キューに格納されている切り替え後に実行されるアプリのアドレス変換テーブルをアドレス変換器209に通知するステップS1704。なお、実行キューとは、各デバイスに割り当てられた実行待ちのアプリ群が格納されたキューである。また、ステップS1703にて、図16で示したポート接続器208がステップS1602、ステップS1603の処理を実行するが、ポート接続器208で実行される処理が同一であるため、図17では省略している。ステップS1704の処理後に実行されるアドレス変換器209も同様に、処理が図16と同一であるため、図17では省略している。通知後、CPU0は、切り替え後に実行されるアプリの実行を対象デバイスに通知しステップS1705、ステップS1501の処理に移行する。図18は、メモリ制御処理を示すフローチャートその4である。特定のデバイスにてアプリ内の関数処理終了イベントが発生した場合ステップS1501:アプリ内関数処理終了、CPU0は、シナリオ情報が有りで登録されているかを判断するステップS1801。シナリオ情報が存在しない、またはシナリオ情報が無しで登録されている場合ステップS1801:No、CPU0は、図19に示すステップS1905の処理に移行する。シナリオ情報が有りで登録されている場合ステップS1801:Yes、CPU0は、シナリオ情報テーブルの終了した関数のレコードに、続きのレコードが存在するか否かを判断するステップS1802。続きのレコードが存在する場合ステップS1802:Yes、CPU0は、シナリオ情報テーブル701に沿って、続きのレコードの対象デバイスフィールドに格納されたデバイスを割当先デバイスに決定するステップS1803。決定後、CPU0は、割当先デバイスの実行キューに、対象アプリを格納するステップS1804。格納後、CPU0は、図19に示すステップS1901の処理に移行する。続きのレコードが存在しない場合ステップS1802:No、CPU0は、ポート接続器208に、占有していたポートの解放を通知するステップS1805。通知を受けたポート接続器208は、通知されたポートを未使用に設定しステップS1806、通知元に完了通知を送信するステップS1807。完了通知を受けたCPU0は、解放したポートの識別情報をアプリシナリオテーブル214から消去するステップS1808。続けて、CPU0は、占有していた記憶領域を解放しステップS1809、解放した記憶領域の先頭アドレスをアプリシナリオテーブル214から消去するステップS1810。消去後、CPU0は、図19に示すステップS1901の処理に移行する。図19は、メモリ制御処理を示すフローチャートその5である。ステップS1804、またはステップS1810の処理終了後、CPU0は、対象デバイスの実行キューに実行待ちアプリが存在するか否かを判断するステップS1901。実行待ちアプリが存在しない場合ステップS1901:No、CPU0は、ステップS1501の処理に移行する。実行待ちアプリが存在する場合ステップS1901:Yes、CPU0は、次に実行されるアプリの接続ポートをポート接続器208に通知するステップS1902。なお、次に実行されるアプリとは、実行キューに格納されているアプリのうち、いずれかのアプリである。たとえば、CPU0は、実行キューの先頭に格納されているアプリを次に実行されるアプリとして決定してもよい。通知後、CPU0は、次に実行されるアプリのアドレス変換テーブルをアドレス変換器209に通知するステップS1903。なお、ステップS1902、ステップS1903以降に処理されるポート接続器208、アドレス変換器209の処理は、図16と同一であるため、図19では省略している。通知後、CPU0は、次に実行されるアプリの実行を対象デバイスに通知しステップS1904、ステップS1501の処理に移行する。シナリオ情報が存在しない、またはシナリオ情報が無しで登録されている場合ステップS1801:No、CPU0は、占有していた記憶領域を解放するステップS1905。解放後、CPU0は、解放した記憶領域の先頭アドレスをアプリシナリオテーブル214から消去するステップS1906。消去後、CPU0は、対象デバイスの実行キューに実行待ちアプリが存在するか否かを判断するステップS1907。実行待ちアプリが存在する場合ステップS1907:Yes、CPU0は、次に実行されるアプリの実行を対象デバイスに通知するステップS1908。通知後、または実行待ちアプリが存在しない場合ステップS1907:No、CPU0は、ステップS1501の処理に移行する。以上説明したように、メモリ制御方法、およびシステムによれば、複数のポートを有するメモリに対して、アプリの割当先デバイスが処理を実行する際に、アプリ占有のポートを介して各アプリの記憶領域にアクセスするようにメモリコントローラを制御する。これにより、システムは、各デバイスが別々のポートを経由してメモリにアクセスするため、アクセス競合を回避できる。また、システムは、対象アプリの処理が複数ある場合、複数の処理のうち特定の処理が終了後、次の処理を実行するデバイスを割当先デバイスに決定し、割当先デバイスに、アプリ占有のポートと記憶領域をアクセスするようにメモリコントローラを制御してもよい。従来例にかかるシステムでは、デバイス間で連携動作を行う場合、各デバイスが管理する記憶領域が異なれば、アクセス競合を回避することができる。しかし、記憶領域が異なる場合、記憶領域間のコピー処理が発生するという問題があった。本実施の形態にかかるシステムは、決定前の割当先デバイスが管理する記憶領域と決定後の割当先デバイスが管理する記憶領域間でのコピー処理を回避することができる。また、システムは、対象アプリが占有するポートおよび記憶領域をテーブルに登録してもよい。これにより、システムは、他のアプリがポートを占有する場合に、テーブルを参照して既に対象アプリが占有しているポートを除いたポートに割り当てることができ、アクセス競合を回避することができる。また、システムは、対象アプリがテーブルに登録されていないとき、対象アプリを負荷が最小であるデバイスに割り当ててもよい。これにより、システムは、各デバイス間の負荷を均等に近づけることができる。また、システムは、対象アプリのシナリオ情報がテーブルに登録されている場合、シナリオ情報が有るアプリ用となる第1ポートを対象アプリに割り当ててもよい。また、システムは、対象アプリのシナリオ情報がテーブルに登録されていない場合、シナリオ情報が無いアプリ用となる第2ポートを対象アプリに割り当ててもよい。同様に、記憶領域においても、システムは、シナリオ情報がテーブルに登録されている場合、シナリオ情報が有るアプリ用となる第1記憶領域を対象アプリに割り当ててもよい。また、システムは、シナリオ情報がテーブルに登録されていない場合、シナリオ情報が無いアプリ用となる第2記憶領域を対象アプリに割り当ててもよい。たとえば、システムは、第1ポートに割り当てるアプリとして、頻繁にメモリにアクセスする処理を含むアプリや、複数のデバイス間でデータをコピーする処理を含むアプリを対象とする。これにより、システムは、アクセス競合およびデバイス間のデータコピーが発生しないアプリで全てのポートが占有されてしまうことを回避できる。また、システムは、アクセス競合またはデバイス間のデータコピーが発生するアプリが起動された際に、第1ポートのうち未使用のポートを割り当てることができる。また、システムは、シナリオ情報が有るアプリが起動された場合に、未使用の第1ポートが存在するか否かを判断し、未使用ポートが存在しない場合、第2ポートをシナリオ情報が有るアプリに割り当ててもよい。これにより、システムは、第1ポートが全て使用中となった場合でも、シナリオ情報が有るアプリを実行開始することができる。また、システムは、デバイスがアクセスする論理アドレスと記憶領域の物理アドレスを変換するアドレス変換テーブルをアドレス変換器に通知してもよい。これにより、対象アプリは、記憶領域がメモリのどの領域に設定されても、常に同一の論理アドレスで実行することができる。また、システムは、対象デバイスに割り当てられたアプリが切り替わるとき、テーブルから切替後のアプリに対応するポートの識別情報を取得して、メモリコントローラ内のポート接続器に通知してもよい。これにより、システムは、切り替え後のアプリに関するコピー処理を回避することができる。また、システムは、対象デバイスに割り当てられたアプリが終了するとき、テーブルに登録されたポートの識別情報および記憶領域のアドレスを消去してもよい。これにより、システムは、一度使用されたポートおよび記憶領域を、別のアプリが使用するポートおよび記憶領域として割り当てることができる。また、システムは、対象アプリを実行中に、メモリのアクセス回数およびデバイスの使用回数を記録し、アクセス回数、使用回数、および対象アプリの処理負荷に基づいて、対象アプリのシナリオ情報をテーブルに登録してもよい。これにより、システムは、シナリオ情報が存在しないアプリであっても、アクセス競合またはデバイス間のコピー処理が発生する場合、次の起動からは占有のポートを割り当てることができ、アクセス競合またはデバイス間のコピー処理を回避することができる。たとえば、システムは、ユーザがネットワークを経由してダウンロードしたアプリ等に対して適用することができる。なお、本実施の形態にかかるメモリコントローラのポート数は、最大でもデバイスの個数でよい。本実施の形態にかかるシステムは、メモリコントローラのポート数分、アプリを同時実行することができる。また、本実施の形態にかかるメモリ制御方法は、ソフトウェアによるメモリ制御を行うため、製造コストを抑えることができる。特許文献1にかかる技術では、メモリコントローラを複数搭載するために、製造コストが増大してしまっていた。また、本実施の形態にかかるシステムは、メモリアクセス競合を回避することにより、従来例にかかるシステムに比べて50程度の性能向上を見込むことができる。なお、本実施の形態で説明したメモリ制御方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本メモリ制御方法を実行するプログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本メモリ制御方法を実行するプログラムは、インターネット等のネットワークを介して配布してもよい。