JP2010128604A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2010128604A
JP2010128604A JP2008300038A JP2008300038A JP2010128604A JP 2010128604 A JP2010128604 A JP 2010128604A JP 2008300038 A JP2008300038 A JP 2008300038A JP 2008300038 A JP2008300038 A JP 2008300038A JP 2010128604 A JP2010128604 A JP 2010128604A
Authority
JP
Japan
Prior art keywords
descriptor
access
priority
data area
address
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
Application number
JP2008300038A
Other languages
English (en)
Inventor
Wataru Ochiai
渉 落合
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2008300038A priority Critical patent/JP2010128604A/ja
Publication of JP2010128604A publication Critical patent/JP2010128604A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】バスマスタの処理内容に応じて優先度を切り替え、優先度の切り替え粒度が細かい場合であっても、ジョブに同期した優先度の切り替えを行うことで、効率的にデータ処理を行うためのメモリアクセスを実現する。
【解決手段】アクセスキュー1014は、受信した複数のアクセスを保持し、ディスクリプタ領域へのアクセスであった場合、アクセスされたディスクリプタをデコードし、そのディスクリプタが示すデータ領域を保持する。また、ディスクリプタへのアクセスからディスクリプタが示す領域へのアクセスの優先度を決定し、決定した優先度をデータ領域と対で保持する。また、データ領域判別回路1013は、バスマスタからのアクセスが保持しているデータ領域に該当するかを判別し、前記アクセスがデータ領域に該当した場合には、アクセスキュー1014は、データ領域と対の優先度に応じて保持しているアクセスの順序を変更する。
【選択図】 図1

Description

本発明は、メモリシステムに関する。
従来、メモリシステムでは、メモリコントローラを介してメモリアクセスを行うバスマスタ、バスインタフェース、アドレス領域によって優先度が決定されている。
以下、バスマスタによって優先度を決定する例を示す。
メモリコントローラは各バスマスタに対する優先度情報を保持し、バスマスタからのアクセスにはマスタ識別子が付加される。バスマスタがメモリコントローラにアクセスした際、メモリコントローラはアクセスに付加されたマスタ識別子よりバスマスタを特定し、前記アクセスの優先度を決定し、前記アクセスをアクセスキューに登録する。メモリコントローラはアクセスの優先度に応じてアクセスキュー内のアクセスの順番を入れ替え、メモリデバイスへのアクセス発行順序を変更する。
次に、バスインタフェースによって優先度が決定する例を示す。
メモリコントローラは各バスインタフェースの優先度情報を保持し、バスインタフェースからのアクセスの際、メモリコントローラはどのバスインタフェースからのアクセスかにより前記アクセスの優先度を決定し、前記アクセスをアクセスキューに登録する。メモリコントローラはアクセスの優先度に応じてアクセスキュー内のアクセスの順番を入れ替え、メモリデバイスへのアクセス発行順序を変更する。
次に、アドレス領域によって優先度が決定する例を示す。
メモリコントローラは指定されたアドレス領域ごとにそのアドレス領域に対するアクセスの優先度情報を保持する。バスマスタまたはバスインタフェースからのアクセスの際、アクセスされたアドレス領域より前記アクセスの優先度を決定し、前記アクセスをアクセスキューに登録する。メモリコントローラはアクセスの優先度に応じてアクセスキュー内のアクセスの順番を入れ替え、メモリデバイスへのアクセス発行順序を変更する。
特開平07−129500号公報 特開2000−20452号公報
しかしながら、バスマスタごとに優先度を持たせる場合、1つのバスマスタが複数のジョブを処理することもある。そのバスマスタが優先度の高いジョブと優先度の低いジョブを処理する場合、そのバスマスタの優先度を高くすると優先度の低いジョブも優先的に処理されてしまう。
また、そのバスマスタの優先度を低くすると優先度の高いジョブが優先的に処理されないといった問題がある。バスインタフェースごとに優先度を持たせる場合、1つのバスインタフェースに複数のバスマスタからのアクセスがあり、そのアクセスの優先度が異なることもある。そのバスインタフェースの優先度を高くすると、そのバスインタフェースにアクセスする優先度の低いジョブも優先的に処理されてしまう。そのバスインタフェースの優先度を低くすると、そのバスインタフェースにアクセスする優先度の高いジョブが優先的に処理されないといった問題がある。
また、アドレス領域ごとに優先度を持たせる場合、優先度の異なるジョブが同じアドレス領域を参照することもある。そのアドレス領域の優先度を高くすると優先度の低いジョブも優先的に処理されてしまい、そのアドレス領域の優先度を低くすると優先度の高いジョブが優先的に処理されないといった問題がある。
また、ソフトウェアでジョブごとに優先度を変更することは可能であるが、優先度の切り替えの粒度が細かい場合には、設定時のオーバーヘッドが生じる。そのため、ジョブに同期した優先度の切り替えが困難であり、効率的にデータ処理を行うためのメモリアクセスを実現できないといった問題がある。
本発明のメモリシステムは、データフェッチを行うバスマスタと、メモリコントローラと、メモリコントローラに接続されるメモリデバイスとにより構成され、メモリ空間上にバスマスタが使用するデータと、メモリ空間上のデータ領域を指定するディスクリプタとを保持するメモリシステムにおいて、受信した複数のアクセスを保持する手段と、バスマスタからのディスクリプタ領域へのアクセスを判別する手段と、ディスクリプタ領域へのアクセスであった場合、アクセスされたディスクリプタをデコードし、そのディスクリプタが示すデータ領域を保持する手段と、ディスクリプタへのアクセスからディスクリプタが示す領域へのアクセスの優先度を決定する手段と、決定した優先度をデータ領域と対で保持する手段と、バスマスタからのアクセスが、保持しているデータ領域に該当するかを判別する手段と、前記アクセスがデータ領域に該当した場合には、前記データ領域と対の優先度に応じて保持しているアクセスの順序を変更する手段とを有することを特徴とする。
本発明によれば、バスマスタの処理内容に応じて優先度を切り替えることが可能となり、優先度の切り替え粒度が細かい場合であっても、ジョブに同期した優先度の切り替えを行うことで、効率的にデータ処理を行うためのメモリアクセスを実現することができる。
<第1の実施の形態>
図1は、本発明のメモリシステムにおける第1の実施形態を表した構成図である。図1において、101はメモリコントローラである。102はメモリデバイスである。103はバスである。バス103は複数バスマスタからのアクセスを調停し、メモリコントローラ101へアクセスを制御する。
104、105はバスマスタである。バスマスタ104、105はバス103に接続され、メモリデバイス102へのアクセスを発行する。バスマスタ104、105はディスクリプタを参照することでアクセスするメモリ空間上のデータ領域を特定し、データフェッチを行う。
1011はディスクリプタ領域リストである。ディスクリプタ領域リスト1011はメモリデバイス102の複数ディスクリプタのアドレス、またはアドレス領域を保持する。
1012はアドレス判別回路である。アドレス判別回路1012はバスマスタ104、105からのアクセスを受信した際、アクセスのアドレスがディスクリプタ領域であるか否かを判別する。ディスクリプタ領域である場合、前記アクセスがディスクリプタ領域に対するものであることを示すフラグを付加してアクセスキュー1014に登録する。ディスクリプタ領域でない場合、前記アクセスをデータ領域判別回路1013へ送信する。
1013はデータ領域判別回路である。データ領域判別回路1013はバスマスタ104、105から受信したアクセスのアドレスがディスクリプタ情報登録リスト1017に登録されているアドレスであるか否かを判別する。登録されているアドレスである場合、該当アドレス領域の優先度を前記アクセスに付加し、アクセスキュー1014に登録する。登録されていないアドレスである場合、前記アクセスに情報を付加しないで、アクセスキュー1014に登録する。
1014はアクセスキューである。アクセスキュー1014はバスマスタ104、105からのアクセスを複数保持することができるキューである。また、アクセスの優先度に応じてコマンド制御回路1015へ送信するアクセスの順序を変更する。
1015はコマンド制御回路である。コマンド制御回路1015はアクセスキュー1014からのアクセスを受信し、メモリアクセスのコマンドに変換し、メモリデバイス102へコマンドを発行する。また、コマンド制御回路1015はアクセスキュー1014からのアクセスにディスクリプタ領域へのアクセスであるフラグが付加されているか否かを判別する。フラグが付加されている場合は、メモリデバイス102から読み出したディスクリプタをディスクリプタデコード回路1016へ送信する。
1016はディスクリプタデコード回路である。ディスクリプタデコード回路1016はディスクリプタをデコードし、ディスクリプタの指し示すデータ領域と優先度を読み出し、ディスクリプタ情報登録リストに送信する。
1017はディスクリプタ情報登録リストである。ディスクリプタ情報登録リスト1017はデコードされたディスクリプタのデータ領域と優先度を対で保持する。1018はリターンキューである。リターンキュー1018はリードデータを保持しバス103にリードデータを送信できるタイミングで送信する。
1021はディスクリプタである。ディスクリプタ1021はデータ領域1023を指し示す(指定する)情報と優先度の情報が設定されている。1022はディスクリプタである。ディスクリプタ1022はデータ領域1024を指し示す情報と優先度の情報が設定されている。1023はデータ領域である。データ領域1023にはディスクリプタ1021にアクセスしたバスマスタが処理すべきジョブに必要な、換言すれば使用するデータが書かれている。1024はデータ領域である。データ領域1024にはディスクリプタ1022にアクセスしたバスマスタが処理すべきジョブに必要な、換言すれば使用するデータが書かれている。
次に、本発明の第1の実施形態におけるメモリシステムの動作を以下に説明する。図2に示すように、ディスクリプタ1021のアドレスは「0x0000010」、ディスクリプタ1022のアドレスは「0x0000014」であるものとする。また、ディスクリプタ1021の指し示すアドレス領域1023は「0x00000100」から「0x00000200」、ディスクリプタ1022の指し示すアドレス領域1024は「0x00000200」から「0x00000300」であるものとする。さらに、ディスクリプタ1021に設定されている優先度は"L"、ディスクリプタ1022に設定されている優先度は"H"であるとする。優先度は"H"が"L"よりも高いものとする。ここでは、すべてのアクセスはワード単位で行われるものとする。
メモリコントローラ101のディスクリプタ領域リスト1011には、ディスクリプタのアドレスリストとして「0x00000010」、「0x00000014」が登録されている。ディスクリプタ領域リスト1011には、「0x00000010」〜「0x00000014」というアドレス領域が登録されていても構わない。
バスマスタ104はディスクリプタ1021をリードし、ディスクリプタ1021の指し示すデータ領域1023からデータフェッチを行う。バスマスタ105はディスクリプタ1022をリードし、ディスクリプタ1022の指し示すデータ領域1024からデータフェッチを行うように設定されているものとする。
まず、バスマスタ104がディスクリプタ1021をリードするアクセス(アドレス「0x00000010」をリード)を発行する。アドレス判別回路1012は受信した前記アクセスのアドレスがディスクリプタ領域リスト1011に登録されたものか否かを判別する。アドレス「0x00000010」はディスクリプタ領域リスト1011に登録されているので、アドレス判別回路1012は前記アクセスがディスクリプタ領域に対するアクセスであることを示すフラグを付加し、アクセスキュー1014に登録する。
アクセスキュー1014の中は図3(A)のようになる。コマンド制御回路1015はアクセスキュー1014から前記アクセスを受信し、メモリデバイス102へアドレス「0x00000010」に対するリードコマンドを発行し、ディスクリプタ1021をリードする。前記アクセスにはディスクリプタ領域へのアクセスであるフラグが付加されていたので、コマンド制御回路1015はリードデータをリターンキュー1018に登録すると同時に、ディスクリプタデコード回路1016に送信する。
ディスクリプタデコード回路1016はディスクリプタ1021をデコードし、ディスクリプタ1021が指し示すデータ領域(0x00000100〜0x00000200)と優先度("L")を読出し、ディスクリプタ情報登録リスト1017に登録する。ディスクリプタ情報登録リスト1017の中は図4(A)のようになる。
リターンキュー1018はバスマスタ104にリードデータ(ディスクリプタ1021)を送信する。バスマスタ104はディスクリプタ1021からアクセスするデータ領域(0x00000100〜0x00000200)を読み出し、前記データ領域からデータをリードするためのアクセスを順に発行する。データ領域内のデータアクセス順は任意であるが、本実施形態でバスマスタ104は、0x00000100、0x00000104、0x00000108、・・・、0x000001FCの順に発行するものとする。
バスマスタ104から前記データ領域からデータをリードするためのアクセスが発行されると、アドレス判別回路1012は前記アクセスのアドレスがディスクリプタ領域リスト1011に登録されていない。よって、前記アクセスをデータ領域判別回路1013に送信する。
データ領域判別回路1013は前記アクセスがディスクリプタ情報登録リスト1017に登録されているデータ領域に対するものか否かを判別する。ディスクリプタ情報登録リスト1017には前記アクセスのアドレスが該当するアドレス領域が登録されているので、前記アドレス領域と対で登録されている優先度を前記アクセスに付加してアクセスキュー1014に登録する。
アクセスキュー1014の中は図3(B)のようになる。バスマスタ104が前記データ領域へ複数回アクセスするとアクセスキュー1014は図3(C)のようになる。図3(C)では、最初に登録された数回のアクセスはすでに処理されている。
次に、バスマスタ105がディスクリプタ1022をリードするアクセス(アドレス「0x00000014」をリード)を発行する。アドレス判別回路1012は受信した前記アクセスのアドレスがディスクリプタ領域リスト1011に登録されたものか否かを判別する。アドレス「0x00000014」はディスクリプタ領域リスト1011に登録されているので、アドレス判別回路1012は前記アクセスがディスクリプタ領域に対するアクセスであることを示すフラグを付加し、アクセスキュー1014に登録する。アクセスキュー1014の中は図3(D)のようになる。
コマンド制御回路1015はアクセスキュー1014から前記アクセスを受信し、メモリデバイス102へアドレス「0x00000014」に対するリードコマンドを発行し、ディスクリプタ1022をリードする。前記アクセスにはディスクリプタ領域へのアクセスであるフラグが付加されていたので、コマンド制御回路1015はリードデータをリターンキュー1018に登録すると同時に、ディスクリプタデコード回路1016に送信する。
ディスクリプタデコード回路1016はディスクリプタ1022をデコードし、ディスクリプタ1022が指し示すデータ領域(0x00000200〜0x00000300)と優先度("H")を読出し、ディスクリプタ情報登録リスト1017に登録する。ディスクリプタ情報登録リスト1017の中は図4(B)のようになる。
リターンキュー1018はバスマスタ105にリードデータ(ディスクリプタ1022)を送信する。バスマスタ105はディスクリプタ1022からアクセスするデータ領域(0x00000200〜0x00000300)を読み出し、前記データ領域からデータをリードするためのアクセスを順に発行する。本実施形態でバスマスタ105は、0x00000200、0x00000204、0x00000208、・・・、0x000002FCの順に発行するものとする。
バスマスタ105から前記データ領域からデータをリードするためのアクセスが発行されると、アドレス判別回路1012は前記アクセスのアドレスがディスクリプタ領域リスト1011に登録されていない。よって、前記アクセスをデータ領域判別回路1013に送信する。
データ領域判別回路1013は前記アクセスがディスクリプタ情報登録リスト1017に登録されているデータ領域に対するものか否かを判別する。ディスクリプタ情報登録リスト1017には前記アクセスのアドレスが該当するアドレス領域が登録されているので、前記アドレス領域と対で登録されている優先度を前記アクセスに付加してアクセスキュー1014に登録する。アクセスキュー1014の中は図3(E)のようになる。
このとき、前記アクセスは先に登録されているアクセスよりも優先度が高いので、優先的にコマンド制御回路1015に発行されるように先に登録されているアクセスを追い越すように並び替えられる。
バスマスタ105が前記データ領域へ複数回アクセスすると、バスマスタ105の発行するアクセスがバスマスタ104の発行するアクセスよりも優先的にコマンド制御回路1015に発行されるので、アクセスキュー1014は図3(F)のようになる。
以上のように、ディスクリプタに優先度が設定されていることで、ディスクリプタへのアクセス時に、そのディスクリプタの指し示す領域へのアクセスの優先度を決定することができ、優先度の高い処理を優先度の低い処理よりも優先的に処理することができる。
また、同じバスマスタが異なるディスクリプタへアクセスし、前記異なるディスクリプタに異なる優先度が設定されていれば、同じバスマスタであっても処理の優先度を切り替えることが可能である。例えば、バスマスタ104がディスクリプタ1021をリードし、ディスクリプタ1021の指し示すデータ領域1023からデータをリードしてジョブを実行する。
次にディスクリプタ1022をリードし、ディスクリプタ1022の指し示すデータ領域1024からデータをリードしてジョブを実行する。ディスクリプタ1021とディスクリプタ1022のデコード結果から優先度が決定し、ディスクリプタ1021ディスクリプタ1022に設定されている優先度が異なれば、同じバスマスタであっても処理ごとに優先度が切り替えられる。
また、本実施形態のように同じバスインタフェースであっても処理ごとに優先度が切り替えられる。さらに、アクセスが同じデータ領域であっても異なるディスクリプタに異なる優先度が設定されており、前記異なるディスクリプタが同じデータ領域を指し示していれば、処理の優先度を切り替えることが可能である。
例えば、ディスクリプタ1021とディスクリプタ1022が同じデータ領域1023を指し示していたとすると、バスマスタ104とバスマスタ105は同じデータ領域1023からデータをリードしてジョブを実行する。ディスクリプタ1021とディスクリプタ1022に設定されている優先度が異なれば、同じデータ領域へのアクセスであっても処理ごとに優先度が切り替えられる。
<第2の実施の形態>
図5は、本発明のメモリシステムにおける第2の実施形態を表した構成図である。図5において、101はメモリコントローラである。102はメモリデバイスである。103はバスである。バス103は複数バスマスタからのアクセスを調停し、メモリコントローラ101へアクセスを制御する。
104、105はバスマスタである。バスマスタ104、105はバス103に接続され、メモリデバイス102へのアクセスを発行する。バスマスタ104、105はディスクリプタを参照することでアクセスするデータ領域を特定し、データフェッチを行う。
1011はディスクリプタアドレスリストである。ディスクリプタアドレスリスト1101はメモリデバイス102の複数ディスクリプタのアドレス、またはアドレス領域を保持する。
1102はディスクリプタ優先度リストである。ディスクリプタ優先度リスト1201はディスクリプタアドレスリスト1101の各アドレスに対して優先度を保持する。
1012はアドレス判別回路である。アドレス判別回路1012はバスマスタ104、105からのアクセスを受信した際、アクセスのアドレスがディスクリプタ領域であるか否かを判別する。
ディスクリプタ領域である場合、前記アクセスがディスクリプタ領域に対するものであることを示すフラグを付加してアクセスキュー1014に登録する。ディスクリプタ領域でない場合、前記アクセスをデータ領域判別回路1013へ送信する。
1013はデータ領域判別回路である。データ領域判別回路1013はバスマスタ104、105から受信したアクセスのアドレスがディスクリプタ情報登録リスト1017に登録されているアドレスであるか否かを判別する。登録されているアドレスである場合、該当アドレス領域の優先度を前記アクセスに付加し、アクセスキュー1014に登録する。登録されていないアドレスである場合、前記アクセスに情報を付加しないで、アクセスキュー1014に登録する。
1014はアクセスキューである。アクセスキュー1014はバスマスタ104、105からのアクセスを複数保持することができるキューである。また、アクセスの優先度に応じてコマンド制御回路1015へ送信するアクセスの順序を変更する。
1015はコマンド制御回路である。コマンド制御回路1015はアクセスキュー1014からのアクセスを受信し、メモリアクセスのコマンドに変換し、メモリデバイス102へコマンドを発行する。また、コマンド制御回路1015はアクセスキュー1014からのアクセスにディスクリプタ領域へのアクセスであるフラグが付加されているか否かを判別する。フラグが付加されている場合は、メモリデバイス102から読み出したディスクリプタをディスクリプタデコード回路1016へ送信する。
1016はディスクリプタデコード回路である。ディスクリプタデコード回路1016はディスクリプタをデコードし、ディスクリプタの指し示すデータ領域と優先度を読み出し、ディスクリプタ情報登録リストに送信する。
1017はディスクリプタ情報登録リストである。ディスクリプタ情報登録リストはデコードされたディスクリプタのデータ領域と優先度を対で保持する。1018はリターンキューである。リターンキュー1018はリードデータを保持しバス103にリードデータを送信できるタイミングで送信する。
1121はディスクリプタである。ディスクリプタ1121はデータ領域1023を指し示す情報が設定されている。1122はディスクリプタである。ディスクリプタ1122はデータ領域1024を指し示す情報が設定されている。1023はデータ領域である。データ領域1023にはディスクリプタ1121にアクセスしたバスマスタが処理すべきジョブに必要なデータが書かれている。1024はデータ領域である。データ領域1024にはディスクリプタ1122にアクセスしたバスマスタが処理すべきジョブに必要なデータが書かれている。
次に、本発明の第2の実施形態におけるメモリシステムの動作を以下に説明する。図2に示すように、ディスクリプタ1121のアドレスは「0x0000010」、ディスクリプタ1122のアドレスは「0x0000014」であるものとする。また、ディスクリプタ1121の指し示すアドレス領域1023は「0x00000100」から「0x00000200」、ディスクリプタ1122の指し示すアドレス領域1024は「0x00000200」から「0x00000300」であるものとする。ここでは、すべてのアクセスはワード単位で行われるものとする。
メモリコントローラ101のディスクリプタアドレスリスト1101には、ディスクリプタのアドレスリストとして0x00000010、0x00000020が登録されている。ディスクリプタアドレスリスト1101には、0x00000010〜0x0000001Cと0x00000020〜0x0000002Cというアドレス領域が登録されていても構わない。また、ディスクリプタ優先度リスト1201にはアドレス「0x00000010」に対しては優先度"L"、アドレス「0x00000020」に対しては優先度"H"が登録されている。
バスマスタ104はディスクリプタ1121をリードし、ディスクリプタ1121の指し示すデータ領域1023からデータフェッチを行う。バスマスタ105はディスクリプタ1122をリードし、ディスクリプタ1122の指し示すデータ領域1024からデータフェッチを行うように設定されているものとする。
まず、バスマスタ104がディスクリプタ1121をリードするアクセス(アドレス「0x00000010」をリード)を発行する。アドレス判別回路1012は受信した前記アクセスのアドレスがディスクリプタアドレスリスト1101に登録されたものか否かを判別する。アドレス「0x00000010」はディスクリプタアドレスリスト1101に登録されているので、アドレス判別回路1012は前記アクセスがディスクリプタに対するアクセスであることを示すフラグを付加し、アクセスキュー1014に登録する。
アクセスキュー1014の中は図3(A)のようになる。このとき、ディスクリプタ優先度リスト1201からアドレス「0x00000010」に該当する優先度"L"がディスクリプタ情報登録リスト1017に登録される。
コマンド制御回路1015はアクセスキュー1014から前記アクセスを受信し、メモリデバイス102へアドレス「0x00000010」に対するリードコマンドを発行し、ディスクリプタ1121をリードする。前記アクセスにはディスクリプタ領域へのアクセスであるフラグが付加されていたので、コマンド制御回路1015はリードデータをリターンキュー1018に登録すると同時に、ディスクリプタデコード回路1016に送信する。
ディスクリプタデコード回路1016はディスクリプタ1121をデコードし、ディスクリプタ1121が指し示すデータ領域(0x00000100〜0x00000200)を読出し、ディスクリプタ情報登録リスト1017に登録する。ディスクリプタ情報登録リスト1017の中は図4(A)のようになる。
リターンキュー1018はバスマスタ104にリードデータ(ディスクリプタ1121)を送信する。バスマスタ104はディスクリプタ1121からアクセスするデータ領域(0x00000100〜0x00000200)を読み出し、前記データ領域からデータをリードするためのアクセスを順に発行する。データ領域内のデータアクセス順は任意であるが、本実施形態でバスマスタ104は、0x00000100、0x00000104、0x00000108、・・・、0x000001FCの順に発行するものとする。
バスマスタ104から前記データ領域からデータをリードするためのアクセスが発行されると、アドレス判別回路1012は前記アクセスのアドレスがディスクリプタアドレスリスト1101に登録されていない。よって、前記アクセスをデータ領域判別回路1013に送信する。
データ領域判別回路1013は前記アクセスがディスクリプタ情報登録リスト1017に登録されているデータ領域に対するものか否かを判別する。ディスクリプタ情報登録リスト1017には前記アクセスのアドレスが該当するアドレス領域が登録されているので、前記アドレス領域と対で登録されている優先度を前記アクセスに付加してアクセスキュー1014に登録する。
アクセスキュー1014の中は図3(B)のようになる。バスマスタ104が前記データ領域へ複数回アクセスするとアクセスキュー1014は図3(C)のようになる。図3(C)では、最初に登録された数回のアクセスはすでに処理されている。
次に、バスマスタ105がディスクリプタ1122をリードするアクセス(アドレス「0x00000020」をリード)を発行する。アドレス判別回路1012は受信した前記アクセスのアドレスがディスクリプタアドレスリスト1101に登録されたものか否かを判別する。アドレス「0x00000020」はディスクリプタアドレスリスト1101に登録されているので、アドレス判別回路1012は前記アクセスがディスクリプタ領域に対するアクセスであることを示すフラグを付加し、アクセスキュー1014に登録する。
アクセスキュー1014の中は図3(D)のようになる。このとき、ディスクリプタ優先度リスト1201からアドレス「0x00000020」に該当する優先度"H"がディスクリプタ情報登録リスト1017に登録される。
コマンド制御回路1015はアクセスキュー1014から前記アクセスを受信し、メモリデバイス102へアドレス「0x00000020」に対するリードコマンドを発行し、ディスクリプタ1122をリードする。前記アクセスにはディスクリプタ領域へのアクセスであるフラグが付加されていたので、コマンド制御回路1015はリードデータをリターンキュー1018に登録すると同時に、ディスクリプタデコード回路1016に送信する。
ディスクリプタデコード回路1016はディスクリプタ1122をデコードし、ディスクリプタ1122が指し示すデータ領域(0x00000200〜0x00000300)を読出し、ディスクリプタ情報登録リスト1017に登録する。ディスクリプタ情報登録リスト1017の中は図4(B)のようになる。
リターンキュー1018はバスマスタ105にリードデータ(ディスクリプタ1122)を送信する。バスマスタ105はディスクリプタ1022からアクセスするデータ領域(0x00000200〜0x00000300)を読み出し、前記データ領域からデータをリードするためのアクセスを順に発行する。本実施形態でバスマスタ105は、0x00000200、0x00000204、0x00000208、・・・、0x000002FCの順に発行するものとする。
バスマスタ105から前記データ領域からデータをリードするためのアクセスが発行されると、アドレス判別回路1012は前記アクセスのアドレスがディスクリプタ領域リスト1011に登録されていない。よって、前記アクセスをデータ領域判別回路1013に送信する。
データ領域判別回路1013は前記アクセスがディスクリプタ情報登録リスト1017に登録されているデータ領域に対するものか否かを判別する。ディスクリプタ情報登録リスト1017には前記アクセスのアドレスが該当するアドレス領域が登録されているので、前記アドレス領域と対で登録されている優先度を前記アクセスに付加してアクセスキュー1014に登録する。アクセスキュー1014の中は図3(E)のようになる。このとき、前記アクセスは先に登録されているアクセスよりも優先度が高いので、優先的にコマンド制御回路1015に発行されるように先に登録されているアクセスを追い越すように並び替えられる。
バスマスタ105が前記データ領域へ複数回アクセスすると、バスマスタ105の発行するアクセスがバスマスタ104の発行するアクセスよりも優先的にコマンド制御回路1015に発行されるので、アクセスキュー1014は図3(F)のようになる。
以上のように、ディスクリプタへのアクセス時に、そのディスクリプタの指し示す領域へのアクセスの優先度を決定することができ、優先度の高い処理を優先度の低い処理よりも優先的に処理することができる。同じバスマスタが異なるディスクリプタへアクセスし、前記異なるディスクリプタのアドレスに対して異なる優先度が設定されていれば、同じバスマスタであっても処理の優先度を切り替えることが可能である。
例えば、バスマスタ104がディスクリプタ1121をリードし、ディスクリプタ1121の指し示すデータ領域1023からデータをリードしてジョブを実行する。
次にディスクリプタ1122をリードし、ディスクリプタ1122の指し示すデータ領域1024からデータをリードしてジョブを実行する。ディスクリプタ1121とディスクリプタ1122のアドレスから優先度が決定し、ディスクリプタ1121のアドレスとディスクリプタ1122のアドレスに対して設定されている優先度が異なれば、同じバスマスタであっても処理ごとに優先度が切り替えられる。
また、本実施形態のように同じバスインタフェースであっても処理ごとに優先度が切り替えられる。さらに、アクセスが同じデータ領域であっても異なるディスクリプタのアドレスに対して異なる優先度が設定されており、前記異なるディスクリプタが同じデータ領域を指し示していれば、処理の優先度を切り替えることが可能である。
例えば、ディスクリプタ1121とディスクリプタ1122が同じデータ領域1023を指し示していたとすると、バスマスタ104とバスマスタ105は同じデータ領域1023からデータをリードしてジョブを実行する。しかし、ディスクリプタ1121のアドレスとディスクリプタ1122のアドレスに対して設定されている優先度が異なれば、同じデータ領域へのアクセスであっても処理ごとに優先度が切り替えられる。
本発明のメモリシステムの第1の実施形態を表した構成図である。 本発明のメモリシステムの第1、第2の実施形態におけるメモリデバイスのアドレスを表した図である。 本発明のメモリシステムの第1、第2の実施形態におけるアクセスキューの内容を表した図である。 本発明のメモリシステムの第1、第2の実施形態におけるディスクリプタ情報登録内容を表した図である。 本発明のメモリシステムの第2の実施形態を表した構成図である。
符号の説明
101 メモリコントローラ
102 メモリデバイス
103 バス
104,105 バスマスタ
1011 ディスクリプタ領域リスト
1012 アドレス判別回路
1013 データ領域判別回路
1014 アクセスキュー
1015 コマンド制御回路
1016 ディスクリプタデコード回路
1017 ディスクリプタ情報登録回路
1018 リターンキュー
1021,1022,1121,1122 ディスクリプタ
1023,1024 データ領域
1101 ディスクリプタアドレスリスト
1201 ディスクリプタ優先度リスト

Claims (3)

  1. データフェッチを行うバスマスタと、メモリコントローラと、メモリコントローラに接続されるメモリデバイスとにより構成され、メモリ空間上にバスマスタが使用するデータと、メモリ空間上のデータ領域を指定するディスクリプタとを保持するメモリシステムにおいて、
    受信した複数のアクセスを保持する手段と、
    バスマスタからのディスクリプタ領域へのアクセスを判別する手段と、
    ディスクリプタ領域へのアクセスであった場合、アクセスされたディスクリプタをデコードし、そのディスクリプタが示すデータ領域を保持する手段と、
    ディスクリプタへのアクセスからディスクリプタが示す領域へのアクセスの優先度を決定する手段と、
    決定した優先度をデータ領域と対で保持する手段と、
    バスマスタからのアクセスが、保持しているデータ領域に該当するかを判別する手段と、
    前記アクセスがデータ領域に該当した場合には、前記データ領域と対の優先度に応じて保持しているアクセスの順序を変更する手段とを有することを特徴とするメモリシステム。
  2. 前記メモリコントローラにおいて、ディスクリプタへのアクセスからディスクリプタの指し示す領域へのアクセスの優先度を決定する手段として、ディスクリプタに優先度が設定されており、ディスクリプタをデコードし、ディスクリプタの指し示すデータ領域へのアクセスの優先度を決定することを特徴とする請求項1に記載のメモリシステム。
  3. 前記メモリコントローラにおいて、ディスクリプタへのアクセスからディスクリプタの指し示す領域へのアクセスの優先度を決定する手段として、ディスクリプタのアドレスごとに優先度が設定されており、ディスクリプタへのアクセスのアドレスにてディスクリプタの指し示すデータ領域へのアクセスの優先度を決定することを特徴とする請求項1に記載のメモリシステム。
JP2008300038A 2008-11-25 2008-11-25 メモリシステム Pending JP2010128604A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008300038A JP2010128604A (ja) 2008-11-25 2008-11-25 メモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008300038A JP2010128604A (ja) 2008-11-25 2008-11-25 メモリシステム

Publications (1)

Publication Number Publication Date
JP2010128604A true JP2010128604A (ja) 2010-06-10

Family

ID=42328977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008300038A Pending JP2010128604A (ja) 2008-11-25 2008-11-25 メモリシステム

Country Status (1)

Country Link
JP (1) JP2010128604A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977833B2 (en) 2011-04-28 2015-03-10 Kabushiki Kaisha Toshiba Memory system
US10959134B2 (en) 2013-02-12 2021-03-23 Altiostar Networks, Inc. Long term evolution radio access network
US11510223B2 (en) 2016-04-08 2022-11-22 Altiostar Networks, Inc. Wireless data priority services
US11523346B2 (en) 2016-12-13 2022-12-06 Altiostar Networks, Inc. Power control in wireless communications

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977833B2 (en) 2011-04-28 2015-03-10 Kabushiki Kaisha Toshiba Memory system
US10959134B2 (en) 2013-02-12 2021-03-23 Altiostar Networks, Inc. Long term evolution radio access network
US11910250B2 (en) 2013-02-12 2024-02-20 Altiostar Networks, Inc. Long term evolution radio access network
US11510223B2 (en) 2016-04-08 2022-11-22 Altiostar Networks, Inc. Wireless data priority services
US11523346B2 (en) 2016-12-13 2022-12-06 Altiostar Networks, Inc. Power control in wireless communications

Similar Documents

Publication Publication Date Title
US9477476B2 (en) Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9195466B2 (en) Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
JP5498505B2 (ja) データバースト間の競合の解決
US20140281429A1 (en) Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
US8176221B2 (en) DMA controller
US10824467B2 (en) Data processing system with protected mode of operation for processing protected content
US9152587B2 (en) Virtualized interrupt delay mechanism
US9043806B2 (en) Information processing device and task switching method
JP2010128604A (ja) メモリシステム
JP2005293596A (ja) データ要求のアービトレーション
US9552313B2 (en) Delivering real time interrupts with an advanced programmable interrupt controller
EP2856304B1 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
JP6106986B2 (ja) 演算処理装置、情報処理装置及び割込制御方法
JP2005258509A (ja) ストレージ装置
US20050135402A1 (en) Data transfer apparatus
JP2008108126A (ja) データ転送制御装置及びそのバスアクセス調停方法
KR101574406B1 (ko) 묘화 제어 장치
US9740660B2 (en) CPU control method, electronic system control method and electronic system for improved CPU utilization in executing functions
JP2003308289A (ja) データ処理装置
JP2010140440A (ja) バス調停装置
JP4198016B2 (ja) 情報処理装置およびその割り込み制御方法
JP6940283B2 (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム
US20150186308A1 (en) Method and an apparatus for interupt collecting and reporting
JP2005063351A (ja) データ転送装置およびデータ転送方法
JP2006268734A (ja) メモリアクセス制御装置