(57)【要約】【課題】ストリームをセグメント単位で処理することが可能な情報処理装置に関して、ストリームの処理を効率化する。【解決手段】１つ以上のストリームをセグメント単位で処理する情報処理手段を備える情報処理装置であって、１つ以上のカウンタであって、１つ以上の前記ストリームの所定のストリームが処理される場合に、当該ストリームに対応する前記カウンタのカウント数が、当該ストリームのセグメントの内の未処理の又は処理済みのセグメントの個数に応じて制御されるカウンタを備えることを特徴とする情報処理装置。【選択図】図１
2008090711.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のストリームをセグメント単位で処理する情報処理手段を備える情報処理装置であって、
１つ以上のカウンタであって、１つ以上の前記ストリームの所定のストリームが処理される場合に、当該ストリームに対応する前記カウンタのカウント数が、当該ストリームのセグメントの内の未処理の又は処理済みのセグメントの個数に応じて制御されるカウンタを備えることを特徴とする情報処理装置。
【請求項２】
１つ以上の前記ストリームの所定のストリームの１つのセグメントの処理が終了した場合に、当該ストリームに対応する前記カウンタのカウント数を、未処理のセグメントの個数を１つ減らす方向に又は処理済みのセグメントの個数を１つ増やす方向に変化させるカウント進行手段を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
１つ以上の前記ストリームの所定のストリームに１つのセグメントが追加された場合に、当該ストリームに対応する前記カウンタのカウント数を、未処理のセグメントの個数を１つ増やす方向に又は処理済みのセグメントの個数を１つ減らす方向に変化させる１つ以上のカウント退行手段を備え、
１つ以上の前記カウント退行手段の各カウント退行手段は、該カウント退行手段に対応する前記ストリームに１つのセグメントが追加された場合に、該カウント退行手段に対応する前記カウンタのカウント数を、未処理のセグメントの個数を１つ増やす方向に又は処理済みのセグメントの個数を１つ減らす方向に変化させることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記カウンタによるカウントが終了した前記ストリームを通知する通知機能、を備えることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記カウンタによるカウントが終了した前記ストリームを通知するための通知情報が格納される通知レジスタ、を備えることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、例えば、システムＬＳＩ等の情報処理装置に関する。
【背景技術】
【０００２】
システムＬＳＩ等の情報処理装置内には、ＣＰＵの他に、暗号処理ブロックや画像処理ブロックや音声処理ブロック等の情報処理ブロックが設けられる事が多い。これらの情報処理ブロックでは、ストリームと呼ばれるデータ・シーケンスが、ＤＭＡ転送等によってセグメント単位で入力され、各ストリームに対応するパラメータを用いてセグメント単位で処理される。例えば、暗号処理ブロックでは、平文のストリームの暗号化処理や暗号文のストリームの復号化処理が、対応する鍵情報等を用いてセグメント単位で実行される。一つのストリームに対応する一組のパラメータを、ここではパラメータ・セットと呼ぶ事にする。
【０００３】
上記の情報処理ブロックには、複数のストリームが、セグメント単位で混合された状態で入力される可能性がある。例を示すと、先ず、第１ストリームの第１セグメントが入力され、次に、第１ストリームの第２セグメントが入力され、次に、第２ストリームの第１セグメントが入力され、次に、第１ストリームの第３セグメントが入力され、次に、第３ストリームの第１セグメントが入力される、といった具合である。この場合、上記の情報処理ブロックは、処理対象のストリームを切り替えながら処理を実行する必要がある。
【０００４】
さて、従来の情報処理装置では、チェイニング可能なＤＭＡコントローラを利用するなどして、各ストリームのストリーム番号が、ＤＲＡＭ等のメモリ内に格納されるディスクリプタ（記述子）という制御データによって指定され、各ストリームのストリーム属性が、各ストリームのストリーム番号を利用して管理される。また、各ストリームの各セグメントの入力アドレス及び出力アドレスも、ディスクリプタによって指定される。ディスクリプタのデータ構造は、チェーン化されたリスト構造となる。暗号処理ブロック等の情報処理ブロックは、ディスクリプタを順番に読み込む事で、各ストリームのストリーム番号を取得し、各ストリームの入力データの読み込み先及び出力データの書き込み先を特定し、各ストリームの処理を実行する。なお、各ストリームのパラメータ・セットは、各ストリームのストリーム番号によって特定される。
【０００５】
一般に、ストリームは、複数のセグメントに分割された後、これらのセグメントの間に他のストリームのセグメントが挟まれたデータ・シーケンスとして、情報処理ブロックに入力される。このようなストリームの入力を処理するためのディスクリプタ・チェーンについて考察する。従来の情報処理装置には、ディスクリプタ・チェーン全体の構成内容に関する情報を設定・利用する手段がなく、各ストリームの処理終了タイミングを管理するのが困難という問題がある。各ストリームの処理状況を管理する手段として、ストリームの切り替わり、即ち、各ディスクリプタの処理毎に、割り込みによってステータス情報を取得するような手段が考えられる。しかし、この場合には、ストリーム同士の間隔が短く連続的に切り替わる入力については、割り込みの取りこぼしが生じることがある。また、各ストリームの終了情報を、ディスクリプタに記述することも考えられる。しかし、この場合には、ストリームのうち、処理対象とする全セグメントの要求の確定まで、処理対象のストリームのディスクリプタ・チェーンの設定内容が確定しないという問題が発生する。更には、この場合には、処理セグメントの追加に伴うディスクリプタ・チェーンへのディスクリプタ追加の際に、ディスクリプタ・チェーンを構成するディスクリプタの修正が必要となり、ストリームへのデータ追加に柔軟に対応できなくなる。
【０００６】
以上のように、従来の情報処理装置では、各ストリームの処理終了タイミングの管理が困難であり、各パラメータ・セットの使用終了タイミングの管理もまた困難である。ストリーム単位で処理終了タイミングの管理を行う事ができないと、上記の情報処理ブロックの稼動中に、ディスクリプタ追加のために、パラメータ・セット・レジスタに上書き設定を行う事ができないため、パラメータ・セット・レジスタの有効利用が望めないと共に、情報処理ブロックによる処理に続くＣＰＵ等による処理を円滑に開始する事ができない。従来の情報処理装置では、各ストリームの処理終了通知が、情報処理ブロックからＣＰＵに、全ストリームの処理終了後にまとめて出力される。従って、情報処理ブロックによる全ストリームの処理が終了するまで、ＣＰＵ等による各ストリームの処理を開始する事ができない。これは、ストリームの処理速度及び処理効率に悪影響を与え兼ねない。
【０００７】
なお、特許文献１には、イベントカウントによる特権割り込み処理において、特権割り込み処理時間とイベント発生タイミングとを非同期化するためのマイクロコンピュータの発明が記載されている。しかしながら、特許文献１に記載の発明は、複数のストリームがセグメント単位で混合された状態で入力されるような状況を想定したものではない。
【特許文献１】特開平９−３１９５９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、ストリームをセグメント単位で処理する事が可能な情報処理装置に関して、ストリームの処理を効率化することを課題とする。
【課題を解決するための手段】
【０００９】
本発明は、例えば、１つ以上のストリームをセグメント単位で処理する情報処理手段を備える情報処理装置であって、１つ以上のカウンタであって、１つ以上の前記ストリームの所定のストリームが処理される場合に、当該ストリームに対応する前記カウンタのカウント数が、当該ストリームのセグメントの内の未処理の又は処理済みのセグメントの個数に応じて制御されるカウンタを備えることを特徴とする情報処理装置に係る。
【発明の効果】
【００１０】
本発明は、ストリームをセグメント単位で処理する事が可能な情報処理装置に関して、ストリームの処理を効率化することを可能にする。
【発明を実施するための最良の形態】
【００１１】
図１は、本発明の実施例の情報処理装置１０１の回路構成図である。
【００１２】
図１の情報処理装置１０１は、システムＬＳＩ等の集積回路であり、ＣＰＵ１１１と、暗号処理ブロック１１２と、ＤＭＡコントローラ１１３と、ＤＲＡＭコントローラ１１４等の回路ブロックを備える。これらの回路ブロックは、同一のＩＣチップ上に形成されており、このＩＣチップ上のデータバスにより相互接続されている。ＤＲＡＭコントローラ１１４には、ＤＲＡＭ１２１が接続されている。ＤＲＡＭ１２１は、情報処理装置１０１の内部に設けられていても外部に設けられていても構わない。
【００１３】
図１の各回路ブロックについて説明する。
【００１４】
ＣＰＵ１１１は、情報処理用のプロセッサである。暗号処理ブロック１１２は、平文のストリームの暗号化処理や暗号文のストリームの復号化処理をセグメント単位で実行する情報処理ブロック（情報処理手段）である。ＤＭＡコントローラ１１３は、ＤＭＡ転送用のコントローラである。ＤＲＡＭコントローラ１１４は、ＤＲＡＭ制御用のコントローラである。ＤＲＡＭ１２１は、情報記憶用のメモリである。暗号処理ブロック１１２には、種々のパラメータを設定するためのパラメータ設定部２０１が存在する。
【００１５】
図２は、パラメータ設定部２０１の回路構成図である。
【００１６】
図２のパラメータ設定部２０１には、パラメータレジスタの具体例である１つ以上のパラメータ・セット・レジスタ２１１と、カウント退行手段の具体例である１つ以上の参照カウンタインクリメンタ２１２と、カウンタの具体例である１つ以上の参照カウンタ２１３と、カウント進行手段の具体例である参照カウンタデクリメンタ２１４と、通知レジスタの具体例である参照終了通知レジスタ２１５とが存在する。
【００１７】
図２の各回路ブロックについて説明する。
【００１８】
パラメータ・セット・レジスタ２１１は、パラメータ・セットが格納されるレジスタである。参照カウンタインクリメンタ２１２は、参照カウンタ２１３のカウント数をインクリメントするインクリメンタである。参照カウンタ２１３は、パラメータ・セットの参照回数、即ち、セグメントの処理回数をカウントするためのカウンタである。参照カウンタデクリメンタ２１４は、参照カウンタ２１３のカウント数をデクリメントするデクリメンタである。参照終了通知レジスタ２１５は、パラメータ・セットの参照終了、即ち、ストリームの処理終了を通知するための通知情報が格納されるレジスタである。
【００１９】
パラメータ設定部２０１には、複数組のパラメータ・セットを格納するために、複数個のパラメータ・セット・レジスタ２１１が設けられている。１個のパラメータ・セット・レジスタ２１１には、１組のパラメータ・セットが格納される。パラメータ設定部２０１には更に、複数個のパラメータ・セット・レジスタ２１１に対応して、複数個の参照カウンタインクリメンタ２１２と、複数個の参照カウンタ２１３とが設けられている。各参照カウンタ２１３は、対応するパラメータ・セット・レジスタ２１１に格納されているパラメータ・セットの参照回数をカウントし、各参照カウンタインクリメンタ２１２は、対応する参照カウンタ２１３のカウント数をインクリメントする。パラメータ設定部２１１には更に、１個の参照カウンタデクリメンタ２１４と、１個の参照終了通知レジスタ２１５とが設けられている。
【００２０】
図３は、暗号処理ブロック１１２による暗号化処理について説明するための図である。
【００２１】
情報処理装置１０１では、図３のように、ＤＲＡＭ１２１から暗号処理ブロック１１２に、平文の一つのストリームがセグメントに分割されて入力され、暗号処理ブロック１１２によって、平文のストリームがセグメント単位で暗号化され、暗号処理ブロック１１２からＤＲＡＭ１２１に、暗号文のストリームがセグメント単位で出力される。図３には、複数の平文のストリームが、セグメント単位で混合された状態で入力され、複数の暗号文のストリームが、セグメント単位で混合された状態で出力される様子が示されている。
【００２２】
各入力ストリームはここでは、入力ストリームの本体である平文データと、該入力ストリームに対応するパラメータ・セットである鍵情報及び初期値等により構成される。この初期値とは、この入力ストリームのセグメント分割数であり、各入力ストリームの初期値は、該入力ストリームに対応する参照カウンタ２１３に設定される初期値となる。
【００２３】
パラメータ設定部２０１にはここでは、６個のパラメータ・セット・レジスタ２１１が設けられており、最大で６組のパラメータ・セットを同時に格納しておくことができる。そのため、暗号処理ブロック１１２は、複数のストリームがセグメント単位で混合された状態で入力された場合、使用するパラメータ・セットを適宜切り替えることで、いずれのストリームも処理することができる。
【００２４】
パラメータ設定部２０１にはここでは、６個のパラメータ・セット・レジスタ２１１に対応して、６個の参照カウンタ２１３が設けられている。暗号処理ブロック１１２では、あるパラメータ・セット・レジスタ２１１に格納されたパラメータ・セットが使用（即ち参照）されて一つのセグメントが処理される毎に、そのパラメータ・セット・レジスタ２１１に対応する参照カウンタ２１３のカウント数が、参照カウンタデクリメンタ２１４によりデクリメントされる。即ち、あるストリームのセグメントが１つ処理される毎に、そのストリームに対応する参照カウンタ２１３のカウント数が１つ減少する。そのため、あるストリームの全てのセグメントの処理が終了すると、そのストリームに対応する参照カウンタ２１３のカウント数が「０」になる。このように、各ストリームに対応する参照カウンタ２１３のカウント数はここでは、その時点でのそのストリームの未処理のセグメントの個数の指標となるように制御される。即ち、各ストリームに対応する参照カウンタ２１３のカウント数はここでは、そのストリームのセグメントの内の未処理のセグメントの個数に応じて制御される。
【００２５】
従って、暗号処理ブロック１１２は、あるストリームに対応する参照カウンタ２１３のカウント数が「０」になったことを検出する事で、そのストリームの処理が終了したことを検出する事ができる。暗号処理ブロック１１２は、あるストリームに対応する参照カウンタ２１３のカウント数が「０」になったことを検出した場合、そのストリームの処理が終了したことを割り込み等によりＣＰＵ１１１に通知する。暗号処理ブロック１１２からＣＰＵ１１１には、処理が終了したストリームを識別するための識別情報（ここではストリーム番号）が通知される。このように、暗号処理ブロック１１２には、参照カウンタ２１３のカウント数が目標値に到達したストリーム、即ち、参照カウンタ２１３によるカウントが終了したストリーム、を通知する通知機能が設けられている。これにより、ＣＰＵ１１１（ＣＰＵ１１１で実行中のプログラム）は、暗号処理ブロック１１２による処理が終了したストリームの存在を認識することができる。
【００２６】
パラメータ設定部２０１には、１個の参照終了通知レジスタ２１５が設けられている。参照終了通知レジスタ２１５には、参照カウンタ２１３のカウント数が「０」になったストリームを通知するための通知情報（ここではストリーム番号）が格納される。当該通知情報は例えば、上記の通知機能用に利用される。参照終了通知レジスタ２１５の格納情報はここでは、読み込みと共にクリアされる。参照終了通知レジスタ２１５には、複数ストリーム分のストリーム番号が格納可能である。
【００２７】
このように、暗号処理ブロック１１２は、上記のような参照カウンタ２１３を具備することにより、当該暗号処理ブロック１１２による処理が終了したストリームを検出できるようになっている。更に、暗号処理ブロック１１２は、上記のような参照カウンタ２１３を複数具備することにより、複数のストリームがセグメント単位で混合された状態で入力されるような場合にも、当該暗号処理ブロック１１２による処理が終了したストリームを随時検出できるようになっている。処理終了ストリームを検出するためのカウント数制御は、上記のような参照カウンタデクリメンタ２１４によって実現される。
【００２８】
そして、情報処理装置１０１では、暗号処理ブロック１１２による処理終了通知がストリーム単位で行われるので、処理終了通知が全ストリーム分まとめて行われる場合に問題となるような、ストリームの処理速度及び処理効率への悪影響が防止されると共に、処理終了通知がセグメント単位で行われる場合に問題となるような、割り込みの取りこぼしが抑制される。特に、ＣＰＵ１１１による処理が、セグメント単位ではなくストリーム単位で実行される場合には、ＣＰＵ１１１にとっては、セグメント単位の処理終了通知よりもストリーム単位の処理終了通知の方が好都合である。
【００２９】
以下、暗号処理ブロック１１２による暗号化処理の詳細について、図３に示す具体的なストリーム及びセグメントに即して説明する。
【００３０】
図３には、第１ストリームの第１セグメント、第２ストリームの第１セグメント、第１ストリームの第２セグメントの順に、第１ストリーム及び第２ストリームが、セグメント単位で混合された状態で暗号処理ブロック１１２に入力される様子が示されている。第１ストリームは、２つのセグメント（第１セグメント及び第２セグメント）からなり、第２ストリームは、１つのセグメント（第１セグメント）からなるものとする。
【００３１】
これらのストリームについては、それぞれのストリームのディスクリプタにより、それぞれのストリームのパラメータ・セットが参照される。そして、第１ストリーム（のパラメータ・セット）に対応する参照カウンタ２１３には、カウント数として初期値「２」が設定される事になり、第２ストリーム（のパラメータ・セット）に対応する参照カウンタ２１３には、カウント数として初期値「１」が設定される事になる。初期値については、参照カウンタ２１３に直接的に書き込まれるようにしてもよいし、参照カウンタインクリメンタ２１２によって参照カウンタ２１３に設定されるようにしてもよい。
【００３２】
暗号処理ブロック１１２の起動後、先ず、第１ストリームの第１セグメントに対応するディスクリプタにより第１ストリームのパラメータ・セットが参照される。そして、当該セグメントの処理が終了すると、第１ストリームの参照カウンタ２１３のカウント数は、参照カウンタデクリメンタ２１４によってデクリメントされて「１」になる。
【００３３】
続いて、第２ストリームの第１セグメントに対応するディスクリプタにより第２ストリームのパラメータ・セットが参照される。そして、当該セグメントの処理が終了すると、第２ストリームの参照カウンタ２１３のカウント数は、参照カウンタデクリメンタ２１４によってデクリメントされて「０」になる。これに応じて、参照終了通知レジスタ２１５には、第２ストリームのストリーム番号『２』が書き込まれる。そして、第２ストリームのストリーム番号『２』が、ＣＰＵ１１１に通知される事になる。
【００３４】
続いて、第１ストリームの第２セグメントに対応するディスクリプタにより第１ストリームのパラメータ・セットが参照される。そして、当該セグメントの処理が終了すると、第１ストリームの参照カウンタ２１３のカウント数は、参照カウンタデクリメンタ２１４によってデクリメントされて「０」になる。これに応じて、参照終了通知レジスタ２１５には、第１ストリームのストリーム番号『１』が書き込まれる。そして、第１ストリームのストリーム番号『１』が、ＣＰＵ１１１に通知される事になる。
【００３５】
以上のように、本実施例では、各ストリームに対応する参照カウンタ２１３のカウント数は、その時点でのそのストリームの未処理のセグメントの個数の指標となるように制御される。例えば、セグメント分割数が「３」のストリームに関しては、カウント数の初期値が「３」になり、１つのセグメントが処理されるとカウント数が「２」になり、２つのセグメントが処理されるとカウント数が「１」になり、３つのセグメントが処理されるとカウント数が目標値の「０」になる、といった具合である。セグメントが１つ処理される毎に、カウント数が、未処理のセグメントの個数を１つ減らす方向（ここではカウント・ダウン方向）に変化する事になる。
【００３６】
本実施例では、各ストリームに対応する参照カウンタ２１３のカウント数は、その時点でのそのストリームの処理済みのセグメントの個数の指標となるように制御されるものとしてもよい。例えば、セグメント分割数が「３」のストリームに関しては、カウント数の初期値が「０」になり、１つのセグメントが処理されるとカウント数が「１」になり、２つのセグメントが処理されるとカウント数が「２」になり、３つのセグメントが処理されるとカウント数が目標値の「３」になる、といった具合である。セグメントが１つ処理される毎に、カウント数が、処理済みのセグメントの個数を１つ増やす方向（ここではカウント・アップ方向）に変化する事になる。この場合、参照カウンタデクリメンタ２１４はインクリメンタに、参照カウンタインクリメンタ２１２はデクリメンタに置き換える必要がある。
【００３７】
これらの場合には、カウント数は、各ストリームの未処理の又は処理済みのセグメントの個数そのものとなっているが、カウント数は、各ストリームの未処理の又は処理済みのセグメントの個数そのものである必要はない。例えば、各ストリームの未処理の又は処理済みのセグメントの個数に定数を掛けた及び／又は加えた値となっていてもよい。
【００３８】
図４は、情報処理装置１０１による情報処理に関するフローチャート図である。図４のフローチャート図には、情報処理装置１０１による情報処理のステップとして、暗号処理ブロック１１２による暗号化処理が登場する。
【００３９】
先ず、ＣＰＵ１１１が、暗号処理ブロック１１２に暗号化させるデータを、セグメント単位でＤＲＡＭ１２１上に配置する（Ｓ１０１）。次に、ＣＰＵ１１１は、配置したデータのパラメータを、パラメータ設定部２０１内に設定する（Ｓ１０２）。次に、ＣＰＵ１１１は、暗号処理ブロック１１２に暗号化処理を開始させる（Ｓ１０３）。
【００４０】
次に、暗号処理ブロック１１２が、ＤＭＡコントローラ１１３やＤＲＡＭコントローラ１１４を利用して、ＤＲＡＭ１２１上から入力データを取り込む（Ｓ２０１）。次に、暗号処理ブロック１１２は、入力データの暗号化処理を実行する（Ｓ２０２）。次に、暗号処理ブロック１１２は、入力データの暗号化処理の結果を、出力データとしてＤＲＡＭ１２１上に配置する（Ｓ２０３）。次に、暗号処理ブロック１１２は、当該データの暗号化処理の終了を、ＣＰＵ１１１に通知する（Ｓ２０４）。これにより、ＣＰＵ１１１は、当該データの処理（例えば、当該データのネットワーク送信）を開始することができる。
【００４１】
以下、暗号処理ブロック１１２による暗号化処理の具体例を例示する。これらの具体例では、１つ以上のストリームの各ストリームを処理する暗号化処理について説明する。
【００４２】
（１）暗号化処理の第１具体例
図５は、暗号化処理の第１具体例について説明するための図である。
【００４３】
図５には、暗号処理ブロック１１２に、１つのストリーム（ストリーム１）が入力される様子が示されている。入力ストリームはストリーム１だけなので、パラメータ・セットは１セットだけ必要となる。ここでは、ストリーム１のパラメータ・セットを、パラメータ・セット１とする。ストリーム１は３つのセグメントに分割されており、パラメータ・セット１に対応する参照カウンタ２１３にはカウント数「３」がセットされる。
【００４４】
入力１の処理が終了すると、パラメータ・セット１の参照カウンタ２１３のカウント数が「２」になる。次に、入力２の処理が終了すると、パラメータ・セット１の参照カウンタ２１３のカウント数が「１」になる。次に、入力３の処理が終了すると、パラメータ・セット１の参照カウンタ２１３のカウント数が「０」になる。そして、ストリーム１の処理の終了が、割り込み等によってＣＰＵ１１１に通知される。処理が終了したストリームがストリーム１である旨は、参照終了通知レジスタ２１５にアクセスすることで判定可能である。
【００４５】
（２）暗号化処理の第２具体例
図６は、暗号化処理の第２具体例について説明するための図である。
【００４６】
図６には、暗号処理ブロック１１２に、２つのストリーム（ストリーム１，２）が入力される様子が示されている。入力ストリームはストリーム１，２の２つなので、パラメータ・セットは２セット必要となる。ここでは、ストリーム１のパラメータ・セットを、パラメータ・セット１とし、ストリーム２のパラメータ・セットを、パラメータ・セット２とする。ストリーム１は３つのセグメントに分割されており、パラメータ・セット１に対応する参照カウンタ２１３にはカウント数「３」がセットされる。ストリーム２は１つのセグメントからなり、パラメータ・セット２に対応する参照カウンタ２１３にはカウント数「１」がセットされる。
【００４７】
入力１乃至４の内、入力２だけはストリーム２に属する。
【００４８】
入力１の処理が終了すると、パラメータ・セット１の参照カウンタ２１３のカウント数が「２」になる。次に、入力２の処理が終了すると、パラメータ・セット２の参照カウンタ２１３のカウント数が「０」になる。そして、暗号処理ブロック１１２は、入力３以降の処理を継続したまま、ストリーム２の処理の終了を、割り込み等によってＣＰＵ１１１に通知する。ＣＰＵ１１１（ＣＰＵ１１１で実行中のプログラム）は、ストリーム１の処理の終了を待たずに、ストリーム２の処理を開始することができる。また、パラメータ・セット２が格納されているパラメータ・セット・レジスタ２１１の格納情報は、この時点以降は書き換えてしまって差し支えない。
【００４９】
（３）暗号化処理の第３具体例
図７は、暗号化処理の第３具体例について説明するための図である。
【００５０】
図７には、暗号処理ブロック１１２に、３つのストリーム（ストリーム１，２，３）が入力される様子が示されている。入力ストリームはストリーム１，２，３の３つなので、パラメータ・セットは３セット必要となる。ここでは、ストリーム１のパラメータ・セットを、パラメータ・セット１とし、ストリーム２のパラメータ・セットを、パラメータ・セット２とし、ストリーム３のパラメータ・セットを、パラメータ・セット３とする。ストリーム１は２つのセグメントに分割されており、パラメータ・セット１に対応する参照カウンタ２１３にはカウント数「２」がセットされる。ストリーム２は１つのセグメントからなり、パラメータ・セット２に対応する参照カウンタ２１３にはカウント数「１」がセットされる。ストリーム３は１つのセグメントからなり、パラメータ・セット３に対応する参照カウンタ２１３にはカウント数「１」がセットされる。
【００５１】
入力１乃至４の内、入力２はストリーム２に属し、入力３はストリーム３に属する。
【００５２】
入力１の処理が終了すると、パラメータ・セット１の参照カウンタ２１３のカウント数が「１」になる。次に、入力２の処理が終了すると、パラメータ・セット２の参照カウンタ２１３のカウント数が「０」になる。そして、暗号処理ブロック１１２は、入力３以降の処理を継続したまま、ストリーム２の処理の終了を、割り込み等によってＣＰＵ１１１に通知する。
【００５３】
ここで、この通知処理の主要部分の開始前に、入力３の処理が終了したとする。入力３の処理が終了すると、パラメータ・セット３の参照カウンタ２１３のカウント数が「０」になる。この場合、暗号処理ブロック１１２は、入力４以降の処理を継続したまま、ストリーム２の処理の終了とストリーム３の処理の終了とを、割り込み等によって一度にまとめてＣＰＵ１１１に通知するものとする。参照終了通知レジスタ２１５には、複数ストリーム分のストリーム番号を格納できるようにしておく。
【００５４】
なお、割り込みのクリアは、参照終了通知レジスタ２１５の読み取り前に実行されるようにする。また、参照終了通知レジスタ２１５が何も示さないＣＰＵ１１１への通知は、無視されるようにする。これにより、暗号処理ブロック１１２からＣＰＵ１１１への通知回数と、対応する処理ハンドラの要処理回数との間に不一致が生じたとしても、特に問題にならずに済む。
【００５５】
（４）暗号化処理の第４具体例
図８は、暗号化処理の第４具体例について説明するための図である。
【００５６】
図８には、暗号処理ブロック１１２に、１つのストリーム（ストリーム１）が入力される様子が示されている。入力ストリームはストリーム１だけなので、パラメータ・セットは１セットだけ必要となる。ここでは、ストリーム１のパラメータ・セットを、パラメータ・セット１とする。ストリーム１は２つのセグメントに分割されており、パラメータ・セット１に対応する参照カウンタ２１３にはカウント数「２」がセットされる。
【００５７】
ここで、暗号処理ブロック１１２の稼動中（起動中）に、ストリーム１に新たな１つのセグメントを追加する追加要求が発生したとする。当該セグメントは、入力３として図８に示されている。当該追加要求に応じて、ストリーム１のディスクリプタ・チェーンに、当該セグメントのディスクリプタが追加され、ストリーム１に、当該セグメントが追加される。その後、ストリーム１（のパラメータ・セット１）に対応する参照カウンタインクリメンタ２１２にアクセスすることで、ストリーム１（のパラメータ・セット１）に対応する参照カウンタ２１３のカウント数が、当該参照カウンタインクリメンタ２１２によりインクリメントされる。即ち、当該参照カウンタ２１３のカウント数が、１つ増加する。これは、ストリーム１に新たな１つのセグメントが追加された事により、ストリーム１の未処理のセグメントの個数が１つ増加した事に対応している。
【００５８】
このように、本実施例では、各ストリームの参照カウンタインクリメンタ２１２にアクセスすることで、暗号処理ブロック１１２の稼動中（起動中）における該ストリームへのセグメントの追加に対処することができる。ただし、ストリームに新たなセグメントを追加する際には、新たなディスクリプタが追加されるディスクリプタ・チェーンのチェーン境界の排他性を確保し、暗号処理ブロック１１２の継続動作を保証するため、追加セグメントと隣接することになるセグメントの処理をブロックしておく必要がある。即ち、図８のストリーム１でいえば、入力３の追加が終了するまで、入力２の処理が保留されている必要がある。
【００５９】
なお、ここでは、暗号処理ブロック１１２に１つのストリームが入力される場合のセグメント追加処理について説明したが、本実施例では、暗号処理ブロック１１２に２つ以上のストリームが入力される場合にも同様のセグメント追加処理を実行可能である。また、当該追加処理は、各ストリームの参照カウンタ２１３のカウント数が、該ストリームの未処理のセグメントの個数の指標となっている場合だけでなく、該ストリームの処理済みのセグメントの個数の指標となっている場合にも適用可能である。ただし、適宜、参照カウンタデクリメンタ２１４はインクリメンタに、参照カウンタインクリメンタ２１２はデクリメンタに置き換える必要がある。パラメータ設定部２０１（図３参照）にはここでは、６個の参照カウンタ２１３に対応して、６個の参照カウンタインクリメンタ２１２が設けられている。これにより、各ストリームに対するセグメント追加処理を、各ストリーム毎に独立して進行することができる。
【００６０】
（変形例）
図９は、暗号処理ブロック１１２による暗号化処理の変形例について説明するための図である。
【００６１】
図３の暗号処理ブロック１１２が、ディスクリプタを利用可能であるのに対して、図９の暗号処理ブロック１１２は、コマンド・リストを利用可能である。コマンド・リストには、フォーマットが規定されているディスクリプタと比べて、多種多様なコマンドを格納可能である。
【００６２】
コマンド・リストはここでは、ＤＲＡＭ１２１に配置される。コマンド・リストには、使用するパラメータ・セットの番号の指定情報や使用するアルゴリズムの種類の指定情報だけでなく、出力に対する加工指定（ＸＯＲ処理等）や、複数のアルゴリズムを適用する旨の指定や、出力形式の指定等、制御手続に関する様々な情報を記述できるようになっている。各コマンド・リストには、１つ又は２つ以上のストリームの処理に関する情報が、コマンド・データとして個々のストリームの単位に関する情報と共に記述され、各コマンド・リストの最後には、次に続くコマンド・リストのアドレスが記述される。
【００６３】
暗号化処理等の処理の開始時に、暗号処理ブロック１１２は、暗号処理ブロック１１２内部のコマンド・リスト・レジスタから、コマンド・リストのアドレス及びサイズを読み込み、コマンド・リストにアクセスする。参照カウンタ２１３に、設定済みのコマンド・リストの内容に対応する初期値が設定された後、暗号ブロック１１２は、暗号化処理等の処理を実行し、ＣＰＵ１１１への処理終了通知を行う。このような機構によって、暗号処理ブロック１１２は、第１乃至第４具体例のような暗号化処理その他の処理を適切に実行することができる。
【００６４】
以上、図１乃至図９に即して本発明の実施例について説明した。本文では、パラメータ設定部２０１に６個の参照カウンタ２１３が設けられている実施例について説明したが、参照カウンタ２１３の個数は６個に限定されるものではない。
【００６５】
なお、本発明の実施形態には例えば、１つ以上のストリームのパラメータを格納するための１つ以上のパラメータレジスタを備えており、１つ以上の前記パラメータレジスタの各パラメータレジスタに、該パラメータレジスタに対応するストリームのパラメータが格納されるような情報処理装置が含まれる。
【図面の簡単な説明】
【００６６】
【図１】情報処理装置の回路構成図である。
【図２】パラメータ設定部の回路構成図である。
【図３】暗号処理ブロックによる暗号化処理について説明するための図である。
【図４】情報処理装置による情報処理に関するフローチャート図である。
【図５】暗号化処理の第１具体例について説明するための図である。
【図６】暗号化処理の第２具体例について説明するための図である。
【図７】暗号化処理の第３具体例について説明するための図である。
【図８】暗号化処理の第４具体例について説明するための図である。
【図９】暗号処理ブロックによる暗号化処理について説明するための図である。
【符号の説明】
【００６７】
１０１  情報処理装置
１１１  ＣＰＵ
１１２  暗号処理ブロック
１１３  ＤＭＡコントローラ
１１４  ＤＲＡＭコントローラ
１２１  ＤＲＡＭ
２０１  パラメータ設定部
２１１  パラメータ・セット・レジスタ
２１２  参照カウンタインクリメンタ
２１３  参照カウンタ
２１４  参照カウンタデクリメンタ
２１５  参照終了通知レジスタ
【図１】
2008090711.tif 000003
【図２】
2008090711.tif 000004
【図３】
2008090711.tif 000005
【図４】
2008090711.tif 000006
【図５】
2008090711.tif 000007
【図６】
2008090711.tif 000008
【図７】
2008090711.tif 000009
【図８】
2008090711.tif 000010
【図９】
2008090711.tif 000011