(57)【要約】【課題】構造体データの移動・コピーをブロックデータとして高速に行うとともに、移動・コピーした構造体データを高速にたどることができるデータ処理装置を提供する。【解決手段】ポインタを含む構造体データを処理するデータ処理装置であって、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる構造体データを処理する処理手段を備えるデータ処理装置とする。【選択図】      図２
2015114862.tif 000002
【特許請求の範囲】
【請求項１】
ポインタを含む構造体データを処理するデータ処理装置であって、
前記ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる前記構造体データを処理する処理手段を備えることを特徴とするデータ処理装置。
【請求項２】
第１の記憶領域と第２の記憶領域との間で構造体データの授受を実行するデータ処理装置であって、
前記処理手段は、
命令実行対象となるデータの論理アドレスを入力とし、前記論理アドレスを物理アドレスに変換して前記第１の記憶領域に出力するアドレス変換手段と、
常に０となる初期信号および前記論理アドレスを入力とし、前記ポインタを処理する命令であるか否かを示す制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択して出力する選択手段と、
前記選択手段の出力を入力とし、前記第１の記憶領域または第２の記憶領域から取得したデータと前記出力データとを用いて演算を実行し、前記相対アドレスを絶対アドレスに変換する演算手段とを有することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記第１の記憶領域からロードしたデータに前記論理アドレスを加算した演算結果を前記第２の記憶領域に読み込みデータとして格納するロード命令を含む請求項２に記載のデータ処理装置。
【請求項４】
前記第１の記憶領域へストアするデータから前記論理アドレスを減算した演算結果を前記第１の記憶領域に書き込みデータとして格納するストア命令を含む請求項２または３に記載のデータ処理装置。
【請求項５】
前記選択手段は、
前記ロード命令を受けた場合、前記制御信号に応じて前記アドレスまたは前記初期信号を選択する第１選択手段と、
前記ストア命令を受けた場合、前記制御信号に応じて前記アドレスまたは前記初期信号を選択する第２選択手段とを有し、
前記演算回路は、
前記ロード命令を受けた場合、前記ロード命令で指定された前記第１の記憶領域のアドレス値と、前記制御信号に応じて出力された値とを加算する加算手段と、
前記ストア命令を受けた場合、前記ストア命令で指定された前記第２の記憶領域から取得した値から、前記制御信号に応じて出力された値を減算する減算手段とを有する請求項４に記載のデータ処理装置。
【請求項６】
前記第１選択手段は、
前記ロード命令を受けた場合、
前記ポインタを処理する命令であれば前記論理アドレスを選択し、前記ポインタを処理する命令でなければ前記初期信号を選択し、
前記第２選択手段は、
前記ストア命令を受けた場合、
前記ポインタを処理する命令であれば前記論理アドレスを選択し、前記ポインタを処理する命令でなければ前記初期信号を選択する請求項５に記載のデータ処理装置。
【請求項７】
前記処理手段は、
前記相対アドレスを含むポインタを記述した部位に前記構造体データがポインタであることを示す識別子を含む前記構造体データを処理することを特徴とする請求項１乃至６のいずれか一項に記載のデータ処理装置。
【請求項８】
ポインタを含む構造体データを処理するデータ処理方法であって、
前記ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる前記構造体データを処理することを特徴とするデータ処理方法。
【請求項９】
第１の記憶領域と第２の記憶領域との間で構造体データの授受を実行するデータ処理方法であって、
命令実行対象となるデータの論理アドレスを入力とし、前記論理アドレスを物理アドレスに変換して前記第１の記憶領域に出力し、
常に０となる初期信号および前記論理アドレスを入力とし、前記論理アドレスに格納されたデータが前記相対アドレスであるか否かを示す制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択して出力し、
前記選択手段の出力を入力とし、前記第１の記憶領域または第２の記憶領域から取得したデータと前記出力データとを用いて演算を実行して前記相対アドレスを絶対アドレスに変換することを特徴とする請求項８に記載のデータ処理方法。
【請求項１０】
ポインタを含む構造体データを処理するデータ処理プログラムであって、
前記ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる前記構造体データを第１の記憶領域と第２の記憶領域との間において授受する際に、
命令実行対象となるデータの論理アドレスを入力とし、前記論理アドレスを物理アドレスに変換して前記第１の記憶領域に出力する処理と、
常に０となる初期信号および前記論理アドレスを入力とし、前記論理アドレスに格納されたデータが前記相対アドレスであるか否かを示す制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択して出力する処理と、
前記選択手段の出力を入力とし、前記第１の記憶領域または第２の記憶領域から取得したデータと前記出力データとを用いて演算を実行して前記相対アドレスを絶対アドレスに変換する処理とをコンピュータに実行させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造体データを処理するデータ処理装置、データ処理方法およびデータ処理プログラムに関する。特に、ポインタを含む構造体データを扱うデータ処理装置、データ処理方法およびデータ処理プログラムに関する。
【背景技術】
【０００２】
近年、科学技術計算が実用化され、実世界にある複雑な構造を使ったシミュレーションが行われている。それらのシミュレーションでは、実世界の複雑な構造を、ポインタを用いた構造体データという形式で計算機内に表現している。ポインタとしては、絶対アドレスまたは相対アドレスのいずれかを用いるが、いずれにおいても長所と短所がある。
【０００３】
特許文献１には、絶対アドレスおよび相対アドレスを用いることに起因する問題点を解決する２つの手段を有するデータ処理装置について開示されている。第１の手段は、構造体データ内のポインタを相対アドレス化し、この相対アドレスを絶対アドレスに変換する手段である。第２の手段は、構造体データ内のポインタを絶対アドレスとし、この構造体データのコピー時にアドレスの変位を全てのポインタの値に加算または減算する手段である。
【０００４】
特許文献１によれば、構造体データの先頭を起点とする相対アドレスをポインタに用いるため、構造体データ全体を移動またはコピーした場合にポインタを書き換える必要がない。また、構造体データの各要素（ワード）が含むタグの種類に応じて、構造体データの先頭アドレスを加算することで、相対アドレスのポインタを絶対アドレスのポインタに変換することができる。その結果、アドレス変換におけるオーバーヘッドを減少でき、ポインタを含む構造体データを高速に処理することが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６３−８９９４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般的な構想体データの処理では、絶対アドレスのポインタを用いた構造体データを移動またはコピーする際には、元の構造体全体をポインタに従ってたどって行きながら、１要素ずつコピーする必要があり、処理時間がかかるという問題点があった。
【０００７】
一般的な構造体データの処理では、各ワードがポインタなのか値なのかをすぐに判断することはできない。そのため、構造体データをたどりながら、そのワードがポインタなのか値なのかを判断し、ポインタの場合には先頭アドレスの差分だけ加算する、値の場合は加算しないという操作を行う必要がある。この処理は、ある領域をブロックとして移動またはコピーする場合の数十倍の処理時間がかかる。
【０００８】
また、上述した特許文献１のデータ処理装置においては、構造体データの先頭アドレスをあらかじめ知っておき、一意に決めておく必要があるという問題点があった。
【０００９】
その理由は、一般的な構造体データは、非常に複雑な構造をしており、構造体の先頭アドレスをすぐに求めることが難しいからである。例えば、複数の構造体間でポインタが用いられている場合など、構造体データを処理する場合に複数の構造体の先頭アドレスが必要になることがある。その場合、特許文献１の方式ではレジスタが不足してしまう。
【００１０】
また、上述した特許文献１が開示している方法では、一般的な計算機において移動やコピーした構造体データを高速にたどることができないという問題点があった。
【００１１】
その理由は、特許文献１ではタグの種類によって各ワードのデータがポインタかどうかを識別し、構造体の先頭アドレスを加算して絶対アドレスのポインタとして構造体の要素を参照しているが、一般的な計算機では、そのようなタグは存在しないからである。
【００１２】
本発明の目的は、上述した課題を解決するデータ処理装置、データ処理方法およびデータ処理プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明のデータ処理装置は、ポインタを含む構造体データを処理するデータ処理装置であって、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる構造体データを処理する処理手段を備える。
【００１４】
本発明のデータ処理方法は、ポインタを含む構造体データを処理するデータ処理方法であって、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる構造体データを処理する。
【００１５】
本発明のデータ処理プログラムは、ポインタを含む構造体データを処理するデータ処理プログラムであって、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる構造体データを第１の記憶領域と第２の記憶領域との間において授受する際に、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用い、命令実行対象となるデータの論理アドレスを入力とし、論理アドレスを物理アドレスに変換して第１の記憶領域に出力する処理と、常に０となる初期信号および論理アドレスを入力とし、論理アドレスに格納されたデータが相対アドレスであるか否かを示す制御信号に応じてアドレス信号または初期信号のいずれかを選択して出力する処理と、選択手段の出力を入力とし、第１の記憶領域または第２の記憶領域から取得したデータと出力データとを用いて演算を実行して相対アドレスを絶対アドレスに変換する処理とをコンピュータに実行させる。
【発明の効果】
【００１６】
本発明のデータ処理装置、データ処理方法およびデータ処理プログラムによれば、構造体データの移動・コピーをブロックデータとして高速に行うとともに、移動・コピーした構造体データを高速にたどることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係るデータ処理システムの構成を示す機能ブロック図である。
【図２】本発明の実施形態に係るデータ処理装置の内部構成を示す機能ブロック図である。
【図３】本発明の実施形態に係るデータ処理装置の内部構成を示す機能ブロック図である。
【図４】本発明の実施形態に係るデータ処理装置におけるロード動作を説明するためのフローチャートである。
【図５】本発明の実施形態に係るデータ処理装置におけるストア動作を説明するためのフローチャートである。
【図６】本発明の実施形態に係るデータ処理装置が処理する構造体データの構造の一例を示す概念図である。
【図７】本発明の実施形態に係るデータ処理装置が処理する構造体データにおいて相対アドレスポインタをポインタに用いた場合の一例を示す概念図である。
【図８】本発明の実施例１に係るデータ処理装置の構成を示す機能ブロック図である。
【図９】本発明の実施例１に係るデータ処理装置が処理する構造体の一例を示す概念図である。
【図１０】本発明の実施例１に係るデータ処理装置が処理する構造体データの構造の一例を示す概念図である。
【図１１】絶対アドレスポインタをポインタに用いた比較例を示す概念図である。
【図１２】比較例に係る絶対アドレスポインタをポインタに用いた構造体データをコピーする例を示す概念図である。
【図１３】本発明の実施例１に係るデータ処理装置が処理する構造体データにおいて相対アドレスポインタをポインタに用いた場合の一例を示す概念図である。
【図１４】本発明の実施例１に係るデータ処理装置が相対アドレスポインタをポインタに用いた構造体データをコピーする例を示す概念図である。
【図１５】本発明の実施例１に係るデータ処理装置がポインタをロードする処理を説明する概念図である。
【図１６】本発明の実施例１に係るデータ処理装置がポインタをロードする処理を説明する概念図である。
【図１７】本発明の実施例１に係るデータ処理装置がポインタをストアする処理を説明する概念図である。
【図１８】本発明の実施例１に係るデータ処理装置がポインタをストアする処理を説明する概念図である。
【図１９】本発明の実施例２に係るメモリが格納する相対アドレスポインタの一例を示す概念図である。
【図２０】本発明の実施例２に係るデータ処理装置の構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１８】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００１９】
（実施形態）
図１〜図３は、本実施形態に係るデータ処理装置の構成に関する図であり、図４および図５は本実施形態に係るデータ処理装置の動作に関する図である。また、図８および図９は、本実施形態に係るデータ処理装置が扱う構造体データを説明するための概念図である。
【００２０】
（構造体データ）
本実施形態に係るデータ処理装置は、ポインタを含む構造体データを扱うことを想定している。特に、ポインタとして、ポインタが書かれたワードのアドレスを起点とする相対アドレスを用いた構造体データを扱うことを想定している。
【００２１】
まずは、本実施形態に係るデータ処理装置１が処理対象とする構造体データについて説明する。図６は、本実施形態に係るデータ処理装置１が処理対象とする構造体データの構造を示す一例である。図６の構造においては、値Ａ（１）から２つのポインタが出ている。２つのポインタのうち、一つはＡ（２）・Ａ（３）・・・・・Ａ（ｘ）を指しており、もう一つはＡ（ｘ＋１）Ａ（ｘ＋２）・・・・・Ａ（ｙ）を指している。なお、ｘおよびｙは自然数とする。
【００２２】
図７は、図６の構造を構造体データとして表現した概念図である。枠内はデータを表し、データの左側に記した数字はデータが格納されるアドレスを示している。なお、図７に示した矢印は、ポインタが指すアドレスを示している。図７において、アドレス４を指す相対アドレスポインタは、データＡ（２）の格納アドレスである４から相対アドレスポインタの格納アドレスである２を引いた値である＋２となる。同様に、アドレスｘ＋２を指す相対アドレスポインタは、データＡ（ｘ＋１）の格納アドレスであるｘ＋３から相対アドレスポインタの格納アドレスである３を引いた値である＋ｘとなる。
【００２３】
このように、本実施形態においては、ポインタが書かれたワードのアドレスを起点とする相対アドレス（相対アドレスポインタ）を含む構造体データを扱う。
【００２４】
（構成）
続いて、本実施形態に係るデータ処理装置１の構成について詳細に説明する。
【００２５】
図１は、本発明の実施形態に係るデータ処理装置１を含むデータ処理システムの構成を示す機能ブロック図である。本実施形態に係るデータ処理システムは、データ処理装置１と、第１の記憶領域２と、第２の記憶領域３とを備える。
【００２６】
第１の記憶領域２は、例えば主記憶装置となるメモリとして実現することができる。第２の記憶領域３は、例えばＣＰＵのレジスタファイルとして実現することができる（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）。
【００２７】
データ処理装置１は、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして含む構造体データのロードとストアを実行する処理手段を備える。処理手段は、図２に示したように、選択手段１０と、演算手段２０と、アドレス変換手段３０とを有する。
【００２８】
アドレス変換手段３０は、論理アドレスからなるアドレス信号（以下、論理アドレス）を入力とし、入力したアドレス信号を論理アドレスから物理アドレスに変換する。そして、アドレス変換手段３０は、物理アドレスに変換されたアドレス信号（以下、物理アドレス）を第１の記憶領域に向けて出力する。
【００２９】
本実施形態におけるアドレス信号は、論理アドレスとして入力される。例えば、命令にアドレスが即値であると書かれているならば、アドレス信号は命令デコーダ（図示しない）から出力された信号である。また、例えば、命令にアドレスを格納しているレジスタ番号が指定されているならば、アドレス信号はレジスタファイルから出力された信号である。
【００３０】
アドレス変換手段３０は、例えばメモリ管理ユニット（ＭＭＵ）として実現することができる（ＭＭＵ：Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）。
【００３１】
アドレス変換手段３０は、論理ページと物理ページの対応表を持ち、ページング方式によって論理ページと物理ページとの対応付けを行う。対応表の論理ページには、論理アドレスの一部（例えば、ページの大きさに当たる部分を除いたアドレスの上位）が論理ページ番号として振られている。対応表においては、ある論理ページ番号に特定の物理ページ番号が対応付け、論理ページと物理ページとを対応されている。なお、アドレス変換手段３０は、セグメンテーション方式やページセグメンテーション方式によってアドレス変換を行う構成としてもよい。
【００３２】
選択手段１０は、論理アドレスと初期信号とを入力とする。初期信号は、データ処理装置１の内部で発生される常にゼロとなる信号であり、以下においては主にゼロ（０）と記載する。そして、選択手段１０は、制御信号に応じて、論理アドレスとゼロ（０）のいずれかを選択して出力する。なお、選択手段１０は、初期信号としてゼロ（０）を入力する構成ではなく、制御信号に応じてゼロ（０）を内部で発生させて出力する構成であってもよい。
【００３３】
本実施形態における制御信号は、命令デコーダからの信号であり、命令がポインタのロード命令（ストア命令）か、または通常のロード命令（ストア命令）かを示す信号となる。
【００３４】
選択手段１０は、命令がポインタのロード命令（ストア命令）か否かによって、論理信号とゼロ（０）とのいずれかを演算手段２０に向けて出力する。すなわち、命令がポインタのロード命令（ストア命令）の場合、選択手段１０は論理アドレスを出力する。一方、命令がポインタのロード命令（ストア命令）ではない通常のロード命令である場合、選択手段１０はゼロ（０）を出力する。
【００３５】
演算手段２０は、選択手段１０によって出力された値（論理アドレスまたは０）と、第１の記憶領域２または第２の記憶領域３から入力したデータとの間で演算処理を実行する。演算手段２０は、第１の記憶領域２または第２の記憶領域３に演算処理結果を記憶させる。
【００３６】
演算手段２０は、ロード命令が発行されて第１の記憶領域２より読み出しデータを取得した場合、第１の記憶領域２より取得した読み出しデータに、選択手段１０の出力値（論理アドレスまたは０）を加算する。そして、演算手段２０は、第２の記憶領域３に演算結果を記憶させる。
【００３７】
ここで、ポインタをロードする命令の場合、選択手段１０から論理アドレスが入力されているため、論理アドレスに読み出しデータが加算されることになる。一方、ポインタをロードする命令ではない場合、選択手段１０からはゼロ（０）が入力されているため、読み出しデータの値は変わらない。
【００３８】
また、演算手段２０は、ストア命令が発行されて第２の記憶領域３よりデータを取得した場合、第２の記憶領域３より取得したデータから、選択手段１０の出力値（論理アドレスまたは０）を減算する。そして、演算手段２０は、第１の記憶領域２に演算結果（読み込みデータ）を記憶させる。
【００３９】
ここで、ポインタをストアする命令の場合、選択手段１０から論理アドレスが入力されているため、第２の記憶領域より取得したデータから論理アドレスを減算することになる。一方、ポインタをストアする命令ではない場合、選択手段１０からはゼロ（０）が入力されているため、第２の記憶領域より取得したデータの値は変わらない。
【００４０】
図３には、選択手段１０および演算手段２０の内部構成の詳細例を示した。
【００４１】
図３に示したように、選択手段１０は、第１選択手段１１と第２選択手段１２とを含む。演算手段２０は、加算手段２１と減算手段２２とを含む。
【００４２】
第１選択手段１１に入力された論理アドレスは、制御信号に応じて、ポインタのロード命令の場合は論理アドレスを、通常のロード命令の場合はゼロ（０）を、加算手段２１に向けて出力する。そして、加算手段２１は、第１の記憶領域２より入力した読み込みデータに、第１選択手段１１より入力した値（論理アドレスまたは０）を加算する。
【００４３】
一方、第２選択手段１２に入力された論理アドレスは、制御信号に応じて、ポインタのストア命令の場合は論理アドレスを、通常のストア命令の場合はゼロ（０）を減算手段２２に向けて出力する。そして、減算手段２２は、第２の記憶領域３より入力したデータから、第２選択手段１２より入力した値（論理アドレスまたは０）を減算する。
【００４４】
なお、図３に示した選択手段１０および演算手段２０の内部構成は一例であり、同様の機能を有する構成をもつならば、本発明の範囲に含まれるものとする。
【００４５】
以上が、本発明の実施形態に係るデータ処理装置１の構成についての説明である。
【００４６】
続いて、本発明の実施形態に係るデータ処理装置１によるデータ処理動作について、図４および図５のフローチャートを用いて説明する。
【００４７】
（動作）
図４は、本発明の実施形態に係るデータ処理装置１におけるロードに関する動作を説明するためのフローチャートである。
【００４８】
図４において、まず、選択手段１０にアドレス信号（以下、論理アドレス）と制御信号が入力される（ステップＳ１１）。論理アドレスは、アドレス変換手段３０と選択手段１０に入力される。制御信号は、選択手段１０に選択信号として入力される。
【００４９】
選択手段１０は、制御信号に応じた値（論理アドレスまたは０）を選択する（ステップＳ１２）。
【００５０】
ここで、ポインタのロード命令である場合（ステップＳ１２でＹｅｓ）、選択手段１０は、制御信号に応じた値として論理アドレスを選択する（ステップＳ１３）。
【００５１】
一方、ポインタのロード命令ではなく、通常のロード命令である場合（ステップＳ１２でＮｏ）、選択手段１０は、制御信号に応じた値としてゼロ（０）を選択する（ステップＳ１４）。
【００５２】
選択手段１０は、ステップＳ１３またはＳ１４で選択された値（論理アドレスまたは０）を演算手段２０に出力する（ステップＳ１５）。
【００５３】
演算手段２０は、選択手段１０からの出力値とともに、第１の記憶領域２よりデータ（読み込みデータ）を取得する（ステップＳ１６）。
【００５４】
演算手段２０は、第１の記憶領域２より取得したデータ値に、選択手段１０の出力値を加算する（ステップＳ１７）。このとき、論理アドレスを入力していた場合（ステップＳ１２でＹｅｓ）、演算手段２０は、第１の記憶領域２より取得した読み込みデータ値に論理アドレスを加算する。一方、ゼロ（０）を入力していた場合（ステップＳ１２でＮｏ）、演算手段２０は、第１の記憶領域２より取得した読み込みデータにゼロ（０）を加算する。
【００５５】
最後に、演算手段２０は、第２の記憶領域に演算結果を出力する（ステップＳ１８）。
【００５６】
すなわち、論理アドレスを入力していた場合（ステップＳ１２でＹｅｓ）、演算手段２０の演算結果は、第１の記憶領域２より取得した読み込みデータに論理アドレスを加算した値となる。一方、ゼロ（０）を入力していた場合（ステップＳ１２でＮｏ）、演算手段２０の演算結果は、第１の記憶領域２より取得した読み込みデータそのものとなる。
【００５７】
図５は、本発明の実施形態に係るデータ処理装置１におけるストアに関する動作を説明するためのフローチャートである。
【００５８】
図５において、まず、選択手段１０にアドレス信号（論理アドレス）が入力される（ステップＳ２１）と、選択手段１０は、制御信号に応じた値（論理アドレスまたは０）を選択する（ステップＳ２２）。
【００５９】
ここで、ポインタのストア命令である場合（ステップＳ２２でＹｅｓ）、選択手段１０は論理アドレスを選択する（ステップＳ２３）。
【００６０】
一方、ポインタのストア命令ではなく、通常のストア命令である場合（ステップＳ２２でＮｏ）、選択手段１０はゼロ（０）を選択する（ステップＳ２４）。
【００６１】
選択手段１０は、ステップＳ２３またはＳ２４で選択された値（論理アドレスまたは０）を演算手段２０に出力する（ステップＳ２５）。
【００６２】
演算手段２０は、選択手段１０からの出力値とともに、第２の記憶領域３よりデータを取得する（ステップＳ２６）。
【００６３】
演算手段２０は、第２の記憶領域３より取得したデータから、選択手段１０の出力値を減算する（ステップＳ２７）。このとき、論理アドレスを入力していた場合（ステップＳ２２でＹｅｓ）、演算手段２０は、第２の記憶領域３より取得したデータから論理アドレスを減算する。一方、ゼロ（０）が入力していた場合（ステップＳ２２でＮｏ）、演算手段２０は、第２の記憶領域３より取得したデータからゼロ（０）を減算する。
【００６４】
最後に、演算手段２０は、第１の記憶領域に演算結果を出力する（ステップＳ２８）。
【００６５】
すなわち、論理アドレスを入力していた場合（ステップＳ２２でＹｅｓ）、演算手段２０の演算結果は、第２の記憶領域３より取得したデータから論理アドレスを減算した値となる。一方、ゼロ（０）を入力していた場合（ステップＳ１２でＮｏ）、演算手段２０の演算結果は、第２の記憶領域３より取得したデータそのものとなる。
【００６６】
以上が、本発明の実施形態に係るデータ処理装置１のストア動作および動作ロードに関する説明である。
【００６７】
以上のように、本実施形態に係るデータ処理装置においては、構造体データで用いるポインタを、ポインタが書かれたワードのアドレスを起点とする相対アドレスとする。
【００６８】
そして、本実施形態に係るデータ処理装置においては、ポインタをロードする命令を設けている。ポインタをロードする命令は、第１の記憶領域（メモリ）からロードしたデータに、ポインタが格納されていたアドレス（論理アドレス）を加算した結果を第２の記憶領域（レジスタ）に格納するというものである。
【００６９】
また、本実施形態に係るデータ処理装置においては、レジスタ内にある絶対アドレスであらわされたポインタをストアする命令を設けている。ポインタをストアする命令は、第１の記憶領域（メモリ）へストアするデータから、ストア先となるアドレス（論理アドレス）を減算した結果を第１の記憶領域（メモリ）にストアするというものである。
【００７０】
（効果）
本実施形態に係るデータ処理装置においては、メモリ上の構造体データが相対アドレスポインタを用いて記述されている。そのため、構造体データの移動やコピーが単純なメモリ領域のブロック転送だけで実現できる。
【００７１】
本実施形態に係る相対アドレスポインタを用いたデータ処理においては、メモリ上の構造体データが相対アドレスポインタを用いて記述されているため、構造体データを他の記憶領域に移動・コピーした際に、ポインタの書き換えなどは不要である。
【００７２】
絶対アドレスポインタを用いた場合は、ポインタの書き換えが必要となるが、本実施形態によれば、ポインタの書き換えが不要となるために、構造体データの移動やコピーをブロックデータとして高速に処理できる。
【００７３】
また、一般的な相対アドレスポインタでは、構造体データの先頭アドレスを参照するため、複数の構造体間でポインタが用いられている場合、複数の構造体の先頭アドレスをレジスタに格納する必要がある。そのため、レジスタの領域が不足することになる。それに対し、本実施形態によれば、複数の構造体間でポインタが用いられていたとしても、ポインタが指すアドレスは変わらず、レジスタを参照することもないため、レジスタの領域が不足することはない。
【００７４】
また、本実施形態によれば、メモリからポインタをロードするときに、レジスタなどに格納された他の情報なしに、絶対アドレスポインタに変換できる。ポインタのロード命令を設けることによって、レジスタには絶対アドレスポインタが格納され、相対アドレスポインタを格納する場合と比較して、構造体データの参照を高速化することができる。すなわち、移動やコピーをした構造体データを高速にたどることを可能とする。
【００７５】
同様に、本実施形態によれば、メモリへポインタをストアするときに、レジスタなどに格納された他の情報なしに、絶対アドレスポインタを相対アドレスポインタに変換できる。ポインタのストア命令を設けることによって、ストアするだけで、レジスタ内の絶対アドレスポインタが相対アドレスポインタとしてメモリに格納される。すなわち、ポインタをロードするときに絶対アドレスポインタとして格納されたポインタを、再度メモリにストアするだけで、本実施形態で扱う相対アドレスポインタとしてメモリに格納することが可能となる。
【００７６】
以上の本実施形態に係るデータ処理装置による動作は、上述のデータ処理装置とは異なる構成をもつ装置によって実現されても、本実施形態の方法を適用している限りは本発明の範囲に含まれる。また、本実施形態に係るデータ処理方法をコンピュータに実行させるデータ処理プログラムも本発明の範囲に含まれる。さらに、本実施形態に係るデータ処理プログラムを記録させたプログラム記録媒体も本発明に含まれるものである。
【００７７】
次に、本発明の実施形態に係るデータ処理装置について、実施例をあげて説明する。
【００７８】
（実施例１）
図８は、本発明の実施例１に係るデータ処理装置１０１を含むデータ処理システム１０の構成を示す機能ブロック図である。本実施例のデータ処理システム１０は、データ処理装置１０１と、メモリ２００と、レジスタファイル３００で構成される。なお、レジスタファイル３００は、複数のレジスタを集積したものである。
【００７９】
また、本実施例のデータ処理装置１０１は、アドレス変換器１３０、加算器１２１、減算器１２２、第１マルチプレクサ１１１、第２マルチプレクサ１１２を備えている。レジスタデータ処理装置１０１は、メモリ２００とレジスタファイル３００との間におけるポインタのロードとストアを行う。
【００８０】
アドレス変換器１３０は、送られてきたアドレス信号（論理アドレス）を論理アドレスから物理アドレスに変換する。そして、アドレス変換器１３０は、物理アドレスに変換したアドレス信号（物理アドレス）をメモリ２００に対して供給する。
【００８１】
加算器１２１は、ポインタをロードする場合には、メモリ２００からの取得したデータ（読み出しデータ）に論理アドレスを加算する。
【００８２】
第１マルチプレクサ１１１は、ロード命令がポインタのロード命令か否かを示す制御信号に応じて、加算器１２１において、メモリ２００からの読み出しデータに加える値として、論理アドレスまたはゼロ（０）を選択する。加算器１２１の出力データは、レジスタファイル１２内のロード命令で指定されたレジスタに読み込まれる。このとき、ロード命令がポインタのロード命令である場合、レジスタには絶対アドレスポインタが読み込まれる。
【００８３】
減算器１２２は、ポインタをストアする場合に、レジスタファイル３００内のストア命令で指定されたレジスタから取得したデータから論理アドレスを減算する。
【００８４】
第２マルチプレクサ１１２は、ストア命令がポインタのストア命令か否かを示す制御信号に応じて、減算器１２２において、レジスタファイル３００のレジスタから減算する値として、論理アドレスまたはゼロ（０）を選択する。減算器１２２の出力である書き込みデータは、メモリ２００に書き込まれる。このとき、ストア命令がポインタのストア命令である場合、メモリ２００には相対アドレスポインタが書き込まれる。
【００８５】
以上が、実施例１に係るデータ処理装置１００の構成についての説明である。
【００８６】
（動作）
次に、図８を使って、本実施例に係るデータ体処理装置１００のロード命令の動作を説明する。なお、以下の説明は、図４のフローチャートにおいて、第１の記憶領域をメモリ２００とし、第２の記憶領域をレジスタファイル３００内のレジスタとして説明する。
【００８７】
まず、ロード命令が発行されると、アドレス信号（論理アドレス）と制御信号がデータ処理装置１０１に供給される。論理アドレスは、アドレス変換器１３０と第１マルチプレクサ１１１に入力される。制御信号は、第１マルチプレクサ１１１に選択信号として入力される（ステップ）。
【００８８】
論理アドレスは、アドレス変換器１３０によって論理アドレスから物理アドレスに変換されたアドレス信号（物理アドレス）としてメモリ２００に供給される。
【００８９】
また、第１マルチプレクサ１１１においては、制御信号に応じて、ポインタのロードの場合には論理アドレスが、そうでない場合はゼロ（０）が選択される。
【００９０】
次に、メモリ２００から読み出しデータが返却されると、加算器１２１において、第１マルチプレクサ１１１で選択された値が読み出しデータに加算される。このとき、ポインタのロードの場合には論理メモリアドレスが、そうでない場合はゼロ（０）が加算される。
【００９１】
そして、加算器１２１の演算結果が、レジスタファイル３００内のロード命令で指定されたレジスタに格納される。
【００９２】
本実施例では、構造体データのポインタが、ポインタの格納されたメモリアドレスからの相対アドレスポインタになっている。そのため、ポインタのロードの場合、加算器１２１において論理アドレスが加算されるので、レジスタには絶対アドレスポインタを含む構造体データが格納されることになる。
【００９３】
図８を使って、本実施例に係るデータ処理装置１００のストア命令の動作を説明する。なお、以下の説明は、図５のフローチャートにおいて、第１の記憶領域をメモリ２００とし、第２の記憶領域をレジスタファイル３００内のレジスタとして説明する。
【００９４】
まず、ストア命令が発行されると、論理アドレス、制御信号、レジスタファイル３００内のストア命令で指定されたレジスタからのデータがデータ処理装置１０１に供給される。
【００９５】
論理アドレスは、アドレス変換器１３０によって論理アドレスから物理アドレスに変換され、アドレス信号（物理アドレス）としてメモリ２００に供給される。論理アドレスは、アドレス変換器１３０と選択手段１１０に入力される。制御信号は、選択手段１０に選択信号として入力される。
【００９６】
また、第２マルチプレクサ１１２においては、制御信号に応じて、ポインタのストア命令の場合には論理アドレスが、そうでない場合にはゼロ（０）が選択される。
【００９７】
さらに、減算器１２２において、レジスタファイル３００より取得したデータから、第２マルチプレクサ１１２で選択された値（論理アドレスまたは０）が減算される。このとき、ポインタのストアの場合には論理アドレスが、そうでない場合はゼロ（０）が減算される。
【００９８】
そして、減算器１２２の演算結果が書き込みデータとしてメモリ２００に供給される。
【００９９】
レジスタ内には絶対アドレスのポインタが格納されているが、減算器１２２において絶対アドレスポインタで記述されたポインタから、ストアされる論理アドレスが減算される。その結果、ポインタが格納されたメモリアドレスからの相対アドレスポインタを含む構造体データがメモリ２００に格納される。
【０１００】
次に、本実施例に係る構造体データのポインタについて図を使って説明する。
【０１０１】
図９は、構造体データで表現している構造の一例である。図９の構造においては、値Ａから２つのポインタが出ている。２つのポインタは、ＢＣまたはＤＥＦを指している。
【０１０２】
図１０は、図９の構造の一例を構造体データとして表したものである。なお。図１０においてはポインタの部分を模式的に矢印で示しているが、実際には何らかの数値によってこの矢印を表すことになる。図１０の構造体データは、アドレス１００〜１０７に格納されている。
【０１０３】
図１１は、比較例として、図１０の矢印の部分に絶対アドレスポインタを用いた場合の構造体データを示している。アドレス１０１には、アドレス１０３を指す絶対アドレスポインタが格納されている。また、アドレス１０２には、アドレス１０５を指す絶対アドレスポインタが格納されている。
【０１０４】
図１２は、比較例として、図１１の絶対アドレスポインタを使った構造体データをアドレス２００〜２０７にコピーした例を示す。アドレス２０１、２０２の絶対アドレスポインタの値は、それぞれ、アドレス２０３、２０５に書き換える必要がある。
【０１０５】
図１３は、図１０の矢印の部分に本発明の相対アドレスポインタを用いた場合の構造体データを示している。アドレス１０３を指す相対アドレスポインタは、１０３から相対アドレスポインタの格納アドレスである１０１を引いた値である＋２となる。アドレス１０５を指す相対アドレスポインタは、１０５から相対アドレスポインタの格納アドレスである１０２を引いた値＋３となる。
【０１０６】
図１４は、図１３の本実施例の相対アドレスポインタを使った構造体データをアドレス２００〜２０７にコピーした例を示す。本実施例の相対アドレスポインタを用いた構造体データでは、異なるアドレスに移動またはコピーしてもポインタの値を書き換える必要はない。そのため、構造体データをデータブロックとしてそのまま移動すればよい。
【０１０７】
このように、本実施例に係る相対アドレスポインタを用いれば、異なるアドレスに移動またはコピーしても、ポインタの値を書き換える必要はないため、比較例の絶対アドレスポインタよりも高速で処理できる。また、一般的な相対アドレスポインタでは、構造体データの先頭アドレスをレジスタに格納しておく必要があるが、本実施例に係る相対アドレスポインタでは、ポインタが格納されているワードのアドレスを起点とするため、参照するレジスタを必要としない。
【０１０８】
次に、実施例１に係るデータ処理装置１０１のロード動作について構造体データの実例を用いて説明する。
【０１０９】
図１５は、図１４の構造体データのアドレス２０１のポインタをデータ処理装置１０１によってロードした例を説明するための概念図である。図１５には、アドレス２０１からポインタ（＋２）のロードを行うと、ロード命令で指定されたレジスタ（レジスタファイル３００内）には絶対アドレスポインタの値２０３が格納されることを示している。
【０１１０】
図１６は、図１４の構造体データのアドレス２０２のポインタをデータ処理装置１０１でロードした例を説明するための概念図である。図１６には、アドレス２０２からポインタ（＋３）のロードを行うと、ロード命令で指定されたレジスタには絶対アドレスのポインタの値２０５が格納されることを示している。
【０１１１】
次に、実施例１に係るデータ処理装置１０１のストア動作について説明する。
【０１１２】
図１７は、本実施例の相対アドレスポインタを使ってアドレス３００〜３０７に図１０の構造体データを作成する過程を示している。図１７においては、ストア命令を受けたデータ処理装置１０１が、メモリ２００のアドレス３０１に絶対アドレスポインタ３０３をストアする例を示している。この際、減算器１２２は、絶対アドレスポインタ３０３のアドレス３０３から論理アドレス３０１を減算する。その結果、メモリ２００のアドレス３０１には相対アドレスポインタの＋２が格納されることになる。
【０１１３】
図１８は、本実施例の相対アドレスポインタを使ってアドレス３００〜３０７に図１０の構造体データを作成する過程を示している。図１８においては、ストア命令を受けたデータ処理装置１０１が、メモリ２００のアドレス３０２に絶対アドレスポインタ３０５をストアする例を示している。この際、減算器１２２は、絶対アドレスポインタ３０５のアドレス３０５から論理アドレス３０２を減算し、メモリ２００のアドレス３０２には相対アドレスポインタの＋３が格納されることになる。
【０１１４】
（実施例２）
次に、実施例２について説明する。実施例１に係る相対アドレスポインタは、１ワード全体を使用していると仮定した。そのため、データ処理装置１０１による演算処理では、ワード全体を加算または減算していた。実施例２では、相対アドレスポインタのビット幅を少なくして、余った部分にポインタであることを示す識別子を埋め込む例を示す。図１９には、実施例２に係るメモリ上の相対アドレスポインタを示す。
【０１１５】
実施例２に係る相対アドレスポインタを用いれば、制御信号を入力しなくても、アドレス信号のみからポインタに関する命令であるか否かを判別できるようになる。そのため、アドレス信号と制御信号とを共通化することが可能となり、図２０のような構成のデータ処理装置１０２を構成することが可能となる。
【０１１６】
図２０の構成のデータ処理装置１０２によれば、アドレス信号と制御信号とを共通化することが可能となるため、回路構成が簡略化される。
【０１１７】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１１８】
１    データ処理装置
２    第１の記憶領域
３    第２の記憶領域
１０    選択手段
１１    第１選択手段
１２    第２選択手段
２０    演算手段
２１    加算手段
２２    減算手段
３０    アドレス変換手段
１０１、１０２    データ処理装置
１１１、１１２    マルチプレクサ
１２１    加算器
１２２    減算器
１３０    アドレス変換器
２００    メモリ
３００    レジスタファイル
【図１】
2015114862.tif 000003
【図２】
2015114862.tif 000004
【図３】
2015114862.tif 000005
【図４】
2015114862.tif 000006
【図５】
2015114862.tif 000007
【図６】
2015114862.tif 000008
【図７】
2015114862.tif 000009
【図８】
2015114862.tif 000010
【図９】
2015114862.tif 000011
【図１０】
2015114862.tif 000012
【図１１】
2015114862.tif 000013
【図１２】
2015114862.tif 000014
【図１３】
2015114862.tif 000015
【図１４】
2015114862.tif 000016
【図１５】
2015114862.tif 000017
【図１６】
2015114862.tif 000018
【図１７】
2015114862.tif 000019
【図１８】
2015114862.tif 000020
【図１９】
2015114862.tif 000021
【図２０】
2015114862.tif 000022
【手続補正書】
【提出日】平成27年4月7日(2015.4.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ポインタを含む構造体データを処理するデータ処理装置であって、
前記ポインタが格納されたワードのアドレスを起点とする相対アドレスを相対アドレスポインタとして用いて、第１の記憶領域と第２の記憶領域との間で前記構造体データの授受を実行する処理手段を備え、
前記処理手段は、
命令実行対象となるデータのアドレス信号を入力とし、前記アドレス信号の論理アドレスを物理アドレスに変換して前記第１の記憶領域に出力するアドレス変換手段と、
常に０となる初期信号および前記アドレス信号を入力とするとともに、前記第１の記憶領域からロードしたデータに前記アドレス信号を加算した演算結果を前記第２の記憶領域に格納するロード命令と、前記第１の記憶領域へストアするデータから前記アドレス信号を減算した演算結果を前記第１の記憶領域に格納するストア命令とを含む命令がポインタのロード／ストア命令および通常のロード／ストア命令の何れであるのかを示す制御信号を入力とし、前記制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択して出力する選択手段と、
前記選択手段の出力を入力とし、前記選択手段によって選択された前記アドレス信号および前記初期信号のいずれかと、前記第１の記憶領域または第２の記憶領域から取得したデータとを用いて、前記相対アドレスポインタを絶対アドレスポインタに変換する演算または前記絶対アドレスポインタを前記相対アドレスポインタに変換する演算を行う演算手段とを有し、
前記選択手段は、
前記ロード命令を受けた場合、前記制御信号に応じて前記アドレス信号または前記初期信号を選択する第１選択手段と、
前記ストア命令を受けた場合、前記制御信号に応じて前記アドレス信号または前記初期信号を選択する第２選択手段とを有し、
前記演算手段は、
前記ロード命令を受けた場合、前記ロード命令で指定された前記第１の記憶領域のアドレス値と、前記制御信号に応じて出力された値とを加算する加算手段と、
前記ストア命令を受けた場合、前記ストア命令で指定された前記第２の記憶領域から取得した値から、前記制御信号に応じて出力された値を減算する減算手段とを有することを特徴とするデータ処理装置。
【請求項２】
前記第１選択手段は、
前記ロード命令を受けた場合、
前記ポインタを処理する命令であれば前記アドレス信号を選択し、前記ポインタを処理する命令でなければ前記初期信号を選択し、
前記第２選択手段は、
前記ストア命令を受けた場合、
前記ポインタを処理する命令であれば前記アドレス信号を選択し、前記ポインタを処理する命令でなければ前記初期信号を選択する請求項１に記載のデータ処理装置。
【請求項３】
前記処理手段は、
前記相対アドレスを含むポインタを記述した部位に前記構造体データがポインタであることを示す識別子を含む前記構造体データを処理することを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
ポインタを含む構造体データを処理するデータ処理方法であって、
前記ポインタが格納されたワードのアドレスを起点とする相対アドレスを相対アドレスポインタとして用いて、第１の記憶領域と第２の記憶領域との間で前記構造体データの授受を実行する際に、
命令実行対象となるデータのアドレス信号を入力とし、前記アドレス信号の論理アドレスを物理アドレスに変換して前記第１の記憶領域に出力し、
常に０となる初期信号および前記アドレス信号を入力とするとともに、前記第１の記憶領域からロードしたデータに前記アドレス信号を加算した演算結果を前記第２の記憶領域に格納するロード命令と、前記第１の記憶領域へストアするデータから前記アドレス信号を減算した演算結果を前記第１の記憶領域に格納するストア命令とを含む命令がポインタのロード／ストア命令および通常のロード／ストア命令の何れであるのかを示す制御信号を入力とし、前記制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択し、
前記制御信号に応じて選択した前記アドレス信号および前記初期信号のいずれかと、前記第１の記憶領域または第２の記憶領域から取得したデータとを用いて、前記ロード命令を受けた場合は、前記ロード命令で指定された前記第１の記憶領域のアドレス値と、前記制御信号に応じて選択した値とを加算することによって前記相対アドレスポインタを絶対アドレスポインタに変換する演算を行い、前記ストア命令を受けた場合は、前記ストア命令で指定された前記第２の記憶領域から取得した値から、前記制御信号に応じて選択した値を減算することによって前記絶対アドレスポインタを前記相対アドレスポインタに変換する演算を行うことを特徴とするデータ処理方法。
【請求項５】
ポインタを含む構造体データを処理するデータ処理プログラムであって、
前記ポインタが格納されたワードのアドレスを起点とする相対アドレスを相対アドレスポインタとして用いる前記構造体データを第１の記憶領域と第２の記憶領域との間において授受する際に、
命令実行対象となるデータの論理アドレスを入力とし、前記論理アドレスを物理アドレスに変換して前記第１の記憶領域に出力する処理と、
常に０となる初期信号および前記論理アドレスを入力とするとともに、前記第１の記憶領域からロードしたデータに前記アドレス信号を加算した演算結果を前記第２の記憶領域に格納するロード命令と、前記第１の記憶領域へストアするデータから前記アドレス信号を減算した演算結果を前記第１の記憶領域に格納するストア命令とを含む命令がポインタのロード／ストア命令および通常のロード／ストア命令の何れであるのかを示す制御信号を入力とし、前記制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択する処理と、
前記制御信号に応じて選択した前記アドレス信号および前記初期信号のいずれかと、前記第１の記憶領域または第２の記憶領域から取得したデータとを用いて、前記ロード命令を受けた場合は、前記ロード命令で指定された前記第１の記憶領域のアドレス値と、前記制御信号に応じて選択した値とを加算することによって前記相対アドレスポインタを絶対アドレスポインタに変換する演算を行い、前記ストア命令を受けた場合は、前記ストア命令で指定された前記第２の記憶領域から取得した値から、前記制御信号に応じて選択した値を減算することによって前記絶対アドレスポインタを前記相対アドレスポインタに変換する演算を行う処理とをコンピュータに実行させることを特徴とするデータ処理プログラム。